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