先看一个error
error: lvalue required as left operand of assignment|
i == 0 ? X = 1.0 : X *= x;
修改后
i == 0 ? (X = 1.0) : (X *= x);
也就是说条件运算符可以执行语句,当是赋值语句时要加括号规定优先级,不然会干扰程序判断。
因为条件运算符作为三目运算符优先级低于所有其他运算符,赋值运算符=除外
如果是数据就简单多了,比如
i == 0 ? 1.0 : 5;
(条件表达式) ? (结果1) : (结果2)
即当条件表达式为真时,整个表达式结果为结果1,否则结果为结果2
条件运算符和if else判断语句可以等价互换,结果1和结果2可以是数据结果也可以是语句等等