tut*_*ike 3 c ternary-operator
void calculate(){
int x=3, y=3, z=1;
printf("%d\n",z+=x<y ? 10:20 );
}
Run Code Online (Sandbox Code Playgroud)
上面的代码打印21.
我明白,首先,程序将评估x <y => 0,然后z = z + 0 = 1,不应该程序打印10,因为1是另一种形式的true.
该程序明确选择了第二个选项,并将其增加到21,有人可以解释一下吗?
oua*_*uah 12
条件运算符的优先级高于赋值运算符.
z+=x<y ? 10:20
被评估为
z+= (x<y ? 10:20)
您可以在此处获取C运算符优先级的摘要:
http://www.kernel.org/doc/man-pages/online/pages/man7/operator.7.html