이 코드를 수행하면 어떤 결과가 나올까요? 차근차근 생각해 보세요.
➊에서 정수형 변수 a를 함수 밖에서 선언하였으므로 전역 변수 a를 선언한 것입니다. main() 함수에서 정수형 변수 b를 지역 변수로 선언하고 ➌에서 변수 a의 값을 출력하고자 합니다. main() 함수에서는 변수 a가 선언되어 있지 않았으나 함수 밖에 전역 변수 a가 선언되어 있으므로 main() 함수에서는 전역 변수 a를 참조하여 출력할 수 있습니다. 물론 b의 값은 main() 함수에서 선언하고 지역 변수 b의 초깃값 2가 출력될 것입니다.
그리고 ➍에서는 func1() 함수를 호출하여 수행합니다. ➎에서 a의 값을 출력합니다. 역시 func1에서도 변수 a가 선언되어 있지 않지만, 전역 변수 a를 참조하여 출력할 수 있습니다. 그러나 b는 func1() 함수 안(지역)에서도 함수 밖(전역)에서도 선언되어 있지 않습니다. main() 함수 안에 선언된 변수 b는 main() 함수 안에서만 사용 가능한 지역 변수므로 접근이 불가능합니다. 결국 이 코드는 마지막 줄인 ➏ 때문에 컴파일 에러가 발생합니다.
그림 3-24 | 실행 결과 컴파일 에러 발생