我是 C++ 的新手。小代码示例如下:
int main(int argc, char* argv[]) {
char ch1;
int int1;
cin >> ch1;
cin >> int1;
cout << ch1 << '\n';
cout << int1 << '\n';
return 0;
}
当我运行程序并输入以下内容时:
az
我得到的输出是:
a 32767
我理解“a”,但为什么整数值是 32767?我只是想测试看看如果我使用“z”而不是分配给 int1 的数值会发生什么。
我尝试输入:
ax
...我也得到了相同的结果。
现在如果我使用 short int1
而不是 int int1
并使用输入运行程序:
az
我得到输出:
a 0
附言
sizeof(int) = 4
sizeof(short) = 2
我使用的是 64 位机器。
最佳答案
当输入流未能读取有效数据时,它不会更改您传递给它的值。 'z' 不是有效数字,因此 int1 保持不变。 int1 未初始化,因此它的值恰好为 32767。在读取数据后检查 cin.fail() 或 cin.good() 的值,以确保一切按您预期的方式工作。
关于c++ - 不稳定的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2451902/