source

gcc는 정적 변수를 자동으로 0으로 초기화합니까?

manysource 2023. 11. 6. 21:55

gcc는 정적 변수를 자동으로 0으로 초기화합니까?

함수에 정적 변수가 선언되었지만 초기화되지 않았습니다.이 변수가 자동으로 0으로 초기화됩니까?

static int idx;

예 - C 표준 ISO/IEC 9899:1999 a.k.a.C99(및 C++) 표준은 이에 해당한다고 말합니다.정확한 텍스트는 WG14 N1256 섹션 6.7.8("초기화")의 항목 10을 참조하십시오.

다른 사람들이 지적한 것처럼 항상 정적 변수를 초기화하는 것이 좋습니다.

static int idx = 0;

이렇게 하는 이유는 일부 컴파일러가 정적 변수를 항상 0으로 초기화하지 않기 때문이 아닙니다(이러한 초기화에 실패한 컴파일러는 종단적으로 고장나 C 또는 C++ 컴파일러라고 주장할 수 없음), 이것은 Say What You Mean - 아마도 프로그래밍의 가장 기본적인 규칙입니다.

기준은 그렇다고 하지만...모범 사례는 항상 변수를 초기화해야 한다는 것을 나타냅니다.컴파일러를 변경하거나 다른 컴퓨터에서 컴파일해야 할 때 예기치 않은 동작이 발생할 가능성을 최소화하려는 경우를 결코 알 수 없습니다.

언급URL : https://stackoverflow.com/questions/1294772/does-gcc-automatically-initialize-static-variables-to-zero