[求助]表达式求值
问题一:int x=1,y=0;
求表达式x-->(x+y)?5:25>y++?'1':'2'的值;
结果为什么是5?
y的最终值是0,为什么不是1?
问题二:
main()
{int x=3,y=3,z;
z=(++x)+(++x)+(++x);
printf("%d",z);
printf("%d",(++y)+(++y)+(++y));
}
为什么上面两个打印语句的结果会不一样?
我不知道二楼你在说什么
第一题: x-->(x+y)?5: (25>y++?'1':'2') 看来题目的编译器条件表达式是从左向右结合的
先读x-- , x变为0 ,x+y=0 x-->(x+y)成立 表达式值为5,(25>y++?'1':'2')没有执行,y值不变
第二题:求z时,x先做三次自增为6 所以z=18, 第二个printf()中,其实就是 4+5+6=15;
个人理解
我不知道二楼你在说什么
二楼说的4楼回答了,强烈建议4位斑竹做个置顶贴,关于复杂式的++--连=作出一个统一解释,要不过两天就来一个问的,然后还不停有人说是这个答案那个答案,虽然都没错却误导提问者.....
[此贴子已经被作者于2006-3-10 1:26:52编辑过]
条件表达式的结合性非5楼所说的左结合。我试过了。