不稳定行为 我是C++的新手。小代码示例如下: int main(int argc, char* argv[]) { char ch1; int int1; cin >> ch1; cin >> int1; cout << ch1 << '\n'; cout << int1 << '\n'; return 0; }

不稳定行为 我是C++的新手。小代码示例如下: int main(int argc, char* argv[]) { char ch1; int int1; cin >> ch1; cin >> int1; cout << ch1 << '\n'; cout << int1 << '\n'; return 0; },c++,iostream,cin,initialization,C++,Iostream,Cin,Initialization,我使用的是64位机器。cin>>int1的意思是“读取一个整数并将其放入int1”。因此,您输入它z,它在整数中不是一个有效字符,它只是中止读取并保留int1中的任何内容 通过将int1初始化为某个值并查看发生了什么来测试这一点。当输入流无法读取有效数据时,它不会更改您传递给它的值。”z'不是有效数字,因此int1保持不变。int1没有初始化,所以它的值恰好是32767。在读取数据之后检查CIN。For(或)CIN。GO(),以确保所有的工作都按您预期的方式工作。 < P> C++ >代码> C

我使用的是64位机器。

cin>>int1
的意思是“读取一个整数并将其放入int1”。因此,您输入它
z
,它在整数中不是一个有效字符,它只是中止读取并保留
int1
中的任何内容


通过将
int1
初始化为某个值并查看发生了什么来测试这一点。

当输入流无法读取有效数据时,它不会更改您传递给它的值。”z'不是有效数字,因此int1保持不变。int1没有初始化,所以它的值恰好是32767。在读取数据之后检查CIN。For(或)CIN。GO(),以确保所有的工作都按您预期的方式工作。

< P> C++ >代码> CIN < /代码> Sturf正在为程序进行输入验证。

当从
cin
流式传输到
int
cin
时,只接受有效数字didgits,-0123456789,也只接受int_MIN和int_MAX之间的值

如果需要
z
(122)的数值,我建议使用c
getchar
函数而不是
cin

int main(int argc, char* argv[]) {

    cout << "function main() .." << '\n';

    char ch1 = getchar();
    int int1 = getchar();
    cout << ch1 << '\n';
    cout << int1 << '\n';

    return 0;

}
就我个人而言,直接使用cin对于在非平凡程序中读取数据来说是个坏主意。我建议您阅读我针对类似问题给出的另一个答案:

int main(int argc, char* argv[]) {

    cout << "function main() .." << '\n';

    char ch1 = getchar();
    int int1 = getchar();
    cout << ch1 << '\n';
    cout << int1 << '\n';

    return 0;

}
a
122