2017-07-30 81 views
-4

我想學習C++和我遇到一個很煩人的矛盾就來了:C++定義多個整數打印出不同的價值

#include <iostream> 
using namespace std; 

int main(){ 
    int var1,var2,var3,var4,var5,var6,var7; 

    cout << var1 << endl; 
    cout << var2 << endl; 
    cout << var3 << endl; 
    cout << var4 << endl; 
    cout << var5 << endl; 
    cout << var6 << endl; 
    cout << var7 << endl; 

    return 0; 
} 

它返回如下:

0 
4196128 
0 
570985680 
32767 
0 
0 

爲什麼我收到不同的值對於這些未設置的值?我不應該爲每個變量取0嗎?我得到的輸出是什麼?

+0

你沒有初始化它們,所以它們有隨機值。 – Arkady

+1

「我得到的輸出是什麼?」,未定義的行爲。 – George

回答

4

未初始化的局部變量將具有值不確定值,這看起來是隨機的。讀取它們的不確定值將導致undefined behavior

1

從未初始化的int讀取是未定義的行爲。您看到的輸出可能是當前存儲在爲變量保留的內存位置中的數據。

但這並不重要,因爲任何事情都可能發生;最重要的是防止不確定的行爲,這是最好的初始化的變量在這裏完成:

int var1 = 0; 
int var2 = 0; 
// and so on 

另外請注意,你的編譯器可以一定可以發出警告,如果使用適當的警戒線。在編譯器的文檔中查看它,並養成不忽略任何警告的習慣。