• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

전역 변수 초기화와 값 대입 질문

24.03.17 15:18 작성 조회수 70

1

전역 변수를 사용할 때

int x;
int y = x;
x = y;

이렇게 파일 스코프에서 rvalue에 변수가 들어가는건 안되는데

void func()

{

x = y;

}

이렇게 블록 스코프에서 rvalue에 변수가 들어가는건 되는 이유가 뭔가요?

답변 1

답변을 작성해보세요.

2

Soobak님의 프로필

Soobak

2024.03.18

안녕하세요, 질문&답변 도우미 Soobak 입니다.

 

전역 변수는 컴파일 타임에 초기화가 이루어집니다.
변수 선언과 동시에 다른 변수를 사용하여 초기화를 하는 것은 가능하지만, 선언 이후에는 선언 구문 '외부' 에서 값을 할당해야 합니다.
즉, 선언과 동시에 다른 전역 변수를 이용한 할당은 가능하지만, 선언 이후의 할당은 실행 구문(예: 말씀하신 함수 내부, 혹은 main 함수가 시작된 이후)에서 이루어져야 합니다.

함수 영역 안에서 전역 변수에 접근하는 것이나, 이를 수정하는 것은 런타임에 이루어지며, 이 시점에서 전역 변수들은 이미 초기화되었거나, 이전에 할당된 값을 가지고 있음이 보장되기 때문에 문제가 되지 않습니다.