三元运算符,无条件

时间:2019-03-15 23:50:17

标签: c++

我找到了一段显示以下内容的代码:

int A = 4;
int Z;

Z = (A ? 55 : 3);

为什么Z的结果为55?

1 个答案:

答案 0 :(得分:4)

您似乎对以下事实普遍存在误解:条件语句(ifwhile,...)和三元运算中的表达式必须“看起来像”条件,因此它们应包含关系/平等/逻辑运算符。

不是那样的。常用的关系/等式/ ...运算符与条件语句/表达式没有任何特殊关系;他们可以自己生活

bool foo = 5 > 4;
std::cout<<foo<<"\n"; // prints 1

和条件语句/表达式并不特别在意它们

if(5) std::cout << "hello\n"; // prints hello

if / ? / while / ...仅计算表达式,检查转换为bool的结果是true还是{ {1}},并采取相应措施。如果表达式不“看起来像”,则条件无关紧要,只要可以将结果转换为false,就可以在条件中使用它。

现在,在这种特殊情况下,bool的取值为4,不为零,因此当转换为A时的取值为bool,因此三元表达式的取值为第二个表达式,因此true