请考虑以下代码:
int n;
if(!cin>>n)
{
cin.clear();
while(cin.get()!='\n')
continue;
}
cout<<n;
输出结果为:
0
为什么终端上没有任何提示输入n
的输入值?为什么未初始化的n
会自动设置为0
?
答案 0 :(得分:12)
逻辑NOT运算符!
的优先级高于按位运算符>>
。如果cin
未处于错误状态,!cin
将变为false
,而当!cin>>n
为零时,n
将为零。使用括号检查读数是否成功。我猜n
碰巧是零。
int n;
if(!(cin>>n))
{
cin.clear();
while(cin.get()!='\n')
continue;
}
cout<<n;