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

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

<시간/>

가장 빈번한 질문 중 하나는 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++가 변수에 대해 일부 기본값을 할당하지 않는지에 대한 질문이 나옵니다. 대답은 스택 변수를 초기화하는 오버헤드가 비용이 많이 든다는 것입니다. 실행 속도도 방해합니다. 따라서 이러한 변수에는 중간 값이 포함될 수 있습니다. 따라서 사용하기 전에 기본 데이터 유형 값을 초기화해야 합니다.