Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C/C++ 프로그램의 초기화되지 않은 기본 데이터 유형

<시간/>

이 섹션에서는 초기화되지 않은 변수 하나를 선언할 때 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++ 컴파일러가 기본값으로 변수를 초기화하지 않는 이유가 무엇입니까? 대답은 간단합니다. 스택 변수를 초기화하는 오버헤드는 실행 속도를 방해하므로 비용이 많이 듭니다. 그 결과 이러한 변수는 불확실한 값으로 구성될 수 있습니다. 따라서 코드에 적용하기 전에 원시 데이터 유형 변수를 초기화하는 것이 좋습니다.