以下是引用gxikings在2009-10-29 14:05:26的发言:
如此的运算我也知道,只是算出的结果,确不是这个样子的.
#include <stdio.h>
void main()
{
int a=1,b=2,c=3,d=4,e=5,f=6;
printf("%d\n",a?b:c=0?d=0:e=0);
printf("%d %d %d %d %d",a,b,c,d,e);
}
按3楼的说 ...
你的代码我2个编译器都不能通过,都报错。
细节问题。
程序代码:
#include <stdio.h>
void main()
{
int a=1,b=2,c=3,d=4,e=5;
printf("%d\n",a?b:c?(d=0):(e=0));
printf("%d %d %d %d %d",a,b,c,d,e);
getch();
}
第一,d=0,e=0要用括号括起来;
第二,c=0是赋值表达式,不是逻辑判断值。(ps:if(0)对;if(c==0)也对;if(c=0),sorry,错)
第三,你的f定义多余,或者你是想接受第一个输出的值?
第四,你的代码判断顺序(以我修改的算)是先判断C,根据C得到的逻辑值,判断是执行d=0还是e=0,然后再根据a的逻辑值判断是执行b还是执行c。因为a是真,直接执行b了,c的后面代码就不考虑了,这样的“潜规则”类似判断&&和||,虽然语法顺序是自右向左,但因为前一项的值已经能确定结果了,所以后面是什么都不需要计算了。