我无法理解为什么下面的代码段返回x而不是b。有条件的运算符错误
#include <iostream>
using namespace std;
int main()
{
int x = 12;
int a = 1;
int b = 0;
cout << "answer: " << (x < a && 1 ? a : (x > b && 0 ? b : x)) << endl;
return 0;
}
我的工作是:
x是大于一个[逻辑和)1 NOT下,移动到第二组括号。
x大于0 [logival和] 0,因此结果应该是'b'。
(既是声明等同于真实的,不应该Result_if_true说法是输出?)
'X> b && 0'装置'(X> B)&&(的static_cast (0))',而不是'(x> b)&&(x> 0)'。 –
chris
2014-11-05 04:54:24
因此,因为布尔值== 0,等于false。 逻辑T和F = F因此返回result_if_false? – Cirrus 2014-11-05 04:58:27
是的,这是正确的。 – chris 2014-11-05 05:10:37