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