开发者

What is cin doing inside argument of if? [duplicate]

This question already has answers here: Closed 11 years ago.

Possible Duplicate:

How would st开发者_开发百科d::ostringstream convert to bool?

#include<iostream.h>
 void main() {
   if(cin>>2) {    // what is cin>>2 doing inside arg of if
      cout<<"if works";
   } else {
       cout<<"else works";
     }
 }

We don't get error in this code.But Alwaysif statement works why? how?


cin >> 2 is invalid. cin >> integervar is valid, assuming that's what you mean?

The standard library class ios which basic_istream (and thus cin) inherits from overloads operator void * (and operator!) to allow you to do such tests.

operator void * returns 0 if failbit or badbit is set - aka the last extraction failed.

This is the "standard" way of combining extraction and checking if the extraction succeeded.


if(cin>>2) 

This wouldn't even compile. See this : http://ideone.com/MiEkq

What you probably mean is : if(cin>>var)

If that is so, then it means IF the read from the input stream succeeds, then then if block will be executed because after successful read, the returned std::istream & can implicitly convert into true, otherwise it converts into false.

BTW, the return type of main() should be int.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜