jeudi 19 août 2021

How cin>>x returns bool type value in if(cin>>x) but not while cout<<(cin>>x); [duplicate]

Code

#include<iostream>
int main()
{
    int x;
    std::cout<<(std::cin>>x)<<"\n";
    
    std::cin.clear();
    std::cin.ignore();
    
    if(std::cin>>x)
    {
        std::cout<<"inside the if-block\n";
    }
}

Output-1

2                  // input-1
0x486650
3                 // input-2
inside the if-block

for input 2 cin>>x succeeds but gives 0x486650

for input 3 if-block executed means it returns 1.

Output-2

a                 // input-1
0
b                 // input-2

for input a cin>>x fails and gives 0 as expected.

for input b cin>>x if-block not executed means it returns 0

So why std::cout<<(std::cin>>x) returns something like 0x486650 when succeeds ?

Aucun commentaire:

Enregistrer un commentaire