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++ 不為變數分配一些預設值?答案是,初始化棧變數的開銷太大。它還會阻礙執行速度。因此,這些變數可能會包含一些中間值。所以在使用之前,我們需要初始化原始資料型別的值。

更新於: 2020 年 8 月 27 日

241 次檢視

啟動你的 職業生涯

完成課程獲得認證

開始
廣告