[求助]表达式求值
问题一: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));
}
为什么上面两个打印语句的结果会不一样?
----------------解决方案--------------------------------------------------------
答案:这两道题如果出自某本书,你可以把它当草纸了,如果出自某位老师,你可以直接告诉他地球开发院聘他为地球最高级CTO,如果是某位朋友或高人的话,恭喜你,你找了位研究带角动物的好老师。
----------------解决方案--------------------------------------------------------
以下是引用Xxibug在2006-3-9 21:32:00的发言:
答案:这两道题如果出自某本书,你可以把它当草纸了,如果出自某位老师,你可以直接告诉他地球开发院聘他为地球最高级CTO,如果是某位朋友或高人的话,恭喜你,你找了位研究带角动物的好老师。
答案:这两道题如果出自某本书,你可以把它当草纸了,如果出自某位老师,你可以直接告诉他地球开发院聘他为地球最高级CTO,如果是某位朋友或高人的话,恭喜你,你找了位研究带角动物的好老师。
我不知道二楼你在说什么
----------------解决方案--------------------------------------------------------
和编译器有关
----------------解决方案--------------------------------------------------------
以下是引用z000ch在2006-3-9 21:19:00的发言:
问题一:
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));
}
为什么上面两个打印语句的结果会不一样?
问题一:
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;
个人理解
----------------解决方案--------------------------------------------------------
以下是引用zhangjuan在2006-3-9 21:47:00的发言:
我不知道二楼你在说什么
二楼说的4楼回答了,强烈建议4位斑竹做个置顶贴,关于复杂式的++--连=作出一个统一解释,要不过两天就来一个问的,然后还不停有人说是这个答案那个答案,虽然都没错却误导提问者.....
feng说得也是....
[此贴子已经被作者于2006-3-10 1:26:52编辑过]
----------------解决方案--------------------------------------------------------
有的人来了不看置顶贴,要是看了也应该知道发帖子之前搜索~
一搜索这样的就有结果
----------------解决方案--------------------------------------------------------
条件表达式的结合性非5楼所说的左结合。我试过了。
----------------解决方案--------------------------------------------------------
以下是引用feng1256在2006-3-9 21:53:00的发言:
和编译器有关
和编译器有关
----------------解决方案--------------------------------------------------------