2017-07-30 41 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 

另外请注意,你的编译器可以一定可以发出警告,如果使用适当的警戒线。在编译器的文档中查看它,并养成不忽略任何警告的习惯。