C++ 声明多个整数打印不同的值
C++ declaring multiple integers prints different values
我正在尝试学习 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;
}
它returns以下内容:
0
4196128
0
570985680
32767
0
0
为什么这些未设置的值会得到不同的值?我不应该为每个变量得到 0 吗?我得到的输出代表什么?
未初始化的局部变量将具有 不确定 值,这看起来是随机的。读取它们的不确定值会导致 undefined behavior.
读取未初始化的 int
是未定义的行为。您看到的输出可能是当前存储在为您的变量保留的内存位置中的数据。
但这并不重要,因为任何事情都有可能发生;重要的是要防止未定义的行为,最好通过初始化变量来完成这里操作:
int var1 = 0;
int var2 = 0;
// and so on
另请注意,如果您使用适当的警告级别,您的编译器肯定会就此向您发出警告。在编译器的文档中查找并养成不忽略任何警告的习惯。
我正在尝试学习 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;
}
它returns以下内容:
0
4196128
0
570985680
32767
0
0
为什么这些未设置的值会得到不同的值?我不应该为每个变量得到 0 吗?我得到的输出代表什么?
未初始化的局部变量将具有 不确定 值,这看起来是随机的。读取它们的不确定值会导致 undefined behavior.
读取未初始化的 int
是未定义的行为。您看到的输出可能是当前存储在为您的变量保留的内存位置中的数据。
但这并不重要,因为任何事情都有可能发生;重要的是要防止未定义的行为,最好通过初始化变量来完成这里操作:
int var1 = 0;
int var2 = 0;
// and so on
另请注意,如果您使用适当的警告级别,您的编译器肯定会就此向您发出警告。在编译器的文档中查找并养成不忽略任何警告的习惯。