[求助]表达式求值
问题一: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;
个人理解