가장 빈번한 질문 중 하나는 C 또는 C++에서 초기화되지 않은 일부 기본 데이터 값의 값은 무엇입니까? 답은 시스템마다 다를 것입니다. 컴파일러가 변수에 0을 할당한다고 가정할 수 있습니다. 정수에 대해 0으로, float 0.0에 대해 수행할 수 있지만 문자 유형 데이터에 대해서는 어떻게 됩니까?
예시
#include <iostream> using namespace std; main() { char a; float b; int c; double d; long e; cout << a << "\n"; cout << b << "\n"; cout << c << "\n"; cout << d << "\n"; cout << e << "\n"; }
출력(Windows 컴파일러에서)
1.4013e-045 0 2.91499e-322 0
출력(Linux 컴파일러에서)
0 0 0 0
자, 이제 왜 C 또는 C++가 변수에 대해 일부 기본값을 할당하지 않는지에 대한 질문이 나옵니다. 대답은 스택 변수를 초기화하는 오버헤드가 비용이 많이 든다는 것입니다. 실행 속도도 방해합니다. 따라서 이러한 변수에는 중간 값이 포함될 수 있습니다. 따라서 사용하기 전에 기본 데이터 유형 값을 초기화해야 합니다.