이 섹션에서는 초기화되지 않은 변수 하나를 선언할 때 C 또는 C++ 언어에서 해당 변수가 보유하는 값을 볼 것입니다. 때로는 컴파일러가 int의 경우 0, float의 경우 0.0과 같은 값을 할당한다고 가정합니다. 하지만 문자 데이터 유형은 어떻게 될까요? 구현을 사용하고 다른 컴파일러를 사용하여 컴파일하자.
예시(C++)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <iostream> using namespace std; int main() { char char_var; float float_var; int int_var; double double_var; long long_var; cout << char_var << endl; cout << float_var << endl; cout << int_var << endl; cout << double_var << endl; cout << long_var << endl; }
출력(Cpp.sh로 컴파일됨)
0 0 0 0
출력(온라인 GDB에서 컴파일됨)
5.88054e-39 0 6.95297e-310 0
출력(로컬 시스템)
9.73438e-039 4309744 1.15685e-306 -53505136
이제 C/C++ 컴파일러가 기본값으로 변수를 초기화하지 않는 이유가 무엇입니까? 대답은 간단합니다. 스택 변수를 초기화하는 오버헤드는 실행 속도를 방해하므로 비용이 많이 듭니다. 그 결과 이러한 변수는 불확실한 값으로 구성될 수 있습니다. 따라서 코드에 적용하기 전에 원시 데이터 유형 변수를 초기화하는 것이 좋습니다.