c++ - Weird boolean conversion (?) -


explain pleasy why second expression returns false

   cout << (4==4) << endl; //1    cout << (4==4==4) << endl; // 0 

(4==4==4) ((4==4)==4) (true == 4) (1==4) 1 false 2 getting printed 0.

note == has associativity left-to-right, doesn't matter (in this case) because if had associativity right-to-left, result have been same.


1. due integral promotion.
2. note 1 might tempted think 4 in (true==4) treated true (after 4 non-zero, hence true). thinking might conclude (true==4) (true==true) true. not how works. bool gets promoted int, instead of int bool.


Comments

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -