C / C ++中未初始化的原始数据类型

最常见的问题之一是C或C ++中一些未初始化的原始数据值是什么?那么答案在不同的系统中会有所不同。我们可以假设编译器会将0赋给变量。可以将整数设置为0,将浮点数设置为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 ++没有为变量分配一些默认值?答案是,初始化堆栈变量的开销很大。这也会影响执行速度。因此,这些变量可能包含一些中间值。因此,我们需要在使用原始数据类型值之前对其进行初始化。