인프런 커뮤니티 질문&답변

용개형멋져님의 프로필 이미지
용개형멋져

작성한 질문수

홍정모의 따라하며 배우는 C언어

12.12 난수 생성기 모듈 만들기 예제

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

해결된 질문

작성

·

182

1

전역 변수를 사용할 때

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

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

void func()

{

x = y;

}

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

답변 1

2

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

 

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

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

용개형멋져님의 프로필 이미지
용개형멋져

작성한 질문수

질문하기