奇怪的布尔转换(?)

Ora*_*Fox 2 c++

解释为什么第二个表达式返回false

   cout << (4==4) << endl; //1
   cout << (4==4==4) << endl; // 0
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 13

(4==4==4)基本上((4==4)==4)(true == 4)哪一个是(1==4) 1,即false 2被打印为0.

请注意,从左到右==具有关联性,但这并不重要(在这种情况下),因为即使它具有从右向左的关联性,结果也是相同的.


1.由于整体推广.
2.请注意,误以为有人可能会4(true==4)可以作为被处理true(毕竟4不为零,因此true).这种想法可能会认为(true==4)(true==true)true.但这不是它的工作原理.bool被提升为int,而不是int到bool.

  • @OrangeFox:`if((x == 4)&&(y == 4))` (3认同)