我是 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/

10-10 20:32