考虑下面的代码,显示编译时错误:错误三元表达
#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
没有显示任何错误的原因是什么?
考虑下面的代码,显示编译时错误:错误三元表达
#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
没有显示任何错误的原因是什么?
为什么会这样;它是有效的和组这样的:
z?(x, (y?x:y)):z
条件表达式的中间操作数可以任何表达。
z?x,y?x:y:z
是两个三元表达式。我将它写成这样:
z ? (x, y ? x : y) : z
恰好有一个?
每个:
始终。
我不会写它:) – erikkallen 2010-03-15 12:04:59
它是正确的。对于每个? ?正好一个:将会出现在 三元表达式 在z?x,y?x中没有:(y);
此代码非常容易出错。 – 2010-03-15 12:03:22