请考虑以下显示编译时错误的代码:
#include <stdio.h>
int main(int argc, char** argv)
{
int x=5,y=0,z=2;
int a=z?x,y?x:(y); // but z?x,y?x:y:z is not showing any error
printf("%d",a);
return 0;
}
请帮我解释z?x,y?x:y:z
没有显示任何错误的原因?
答案 0 :(得分:3)
为什么会这样;这是有效的,像这样的团体:
z?(x, (y?x:y)):z
条件表达式的中间操作数可以是任何表达式。
答案 1 :(得分:2)
这是正确的.. 为每个?恰好一个:将在那里 三元表达式 在z?x,y?x:(y);
中不存在答案 2 :(得分:0)
逗号,
不是三元表达式的一部分。
答案 3 :(得分:0)
z?x,y?x:y:z
是两个三元表达式。我会这样写:
z ? (x, y ? x : y) : z
每个?
始终只有一个:
。