不稳定行为 我是C++的新手。小代码示例如下: int main(int argc, char* argv[]) { char ch1; int int1; cin >> ch1; cin >> int1; cout << ch1 << '\n'; cout << int1 << '\n'; return 0; }
我使用的是64位机器。不稳定行为 我是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
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)的数值,我建议使用cgetchar
函数而不是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