#include<iostream.h>
void main() {
if(cin>>2) { // what is cin>>2 doing inside arg of if
cout<<"if works";
} else {
cout<<"else works";
}
}
我们在此代码中未收到错误。但始终if
语句有效 为什么?如何?
答案 0 :(得分:3)
cin >> 2
无效。假设这是你的意思,cin >> integervar
是有效的吗?
标准库类ios
basic_istream
(以及cin
)继承自重载operator void *
(和operator!
)以允许您进行此类测试。
operator void *
或failbit
, badbit
将返回0 - 即最后一次提取失败。
如果提取成功,这是结合提取和检查的“标准”方式。
答案 1 :(得分:2)
if(cin>>2)
这甚至都不会编译。请参阅:http://ideone.com/MiEkq
你的意思是:if(cin>>var)
如果是这样,则意味着如果输入流的读取成功,那么将执行if
块,因为在成功读取之后,返回的std::istream &
可以隐式转换为{{1 }},否则转换为true
。
顺便说一句,false
的返回类型应为main()
。