考虑以下代码:
int n;
if(!cin>>n)
{
cin.clear();
while(cin.get()!='\n')
continue;
}
cout<<n;
输出是:
0
为什么终端没有任何提示输入n
的输入值?为什么未初始化的 n
会自动设置为 0
?
最佳答案
逻辑非运算符 !
的优先级高于移位运算符 >>>
。如果 cin
不处于错误状态,!cin
将变为 false
并且 !cin>>n
将为零当 n
为零时。使用括号检查读取是否成功。我猜 n
恰好为零。
int n;
if(!(cin>>n))
{
cin.clear();
while(cin.get()!='\n')
continue;
}
cout<<n;
关于c++ - 绕过 cin 语句的未初始化局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38017600/