当前位置: 代码迷 >> C语言 >> help me
  详细解决方案

help me

热度:314   发布时间:2008-03-12 19:40:44.0
help me
#include <stdio.h>
main()
{
int i=1,j=1,k=2;
if((j++||k++) && i++)
printf("%d,%d,&d\n",i,j,k);
}
结果是怎么算出的???
搜索更多相关的解决方案: help  

----------------解决方案--------------------------------------------------------
j++是先取j得值,由于j是1,整个||式子为真。后面就不算了,但j自己要加一,k就不自加了。
但对于&&左边为真,还要计算右边,所以i也自加。
最后,i=j=k=2
----------------解决方案--------------------------------------------------------
同意楼上,不知道c里面有没有&和|啊??
----------------解决方案--------------------------------------------------------
回复 1# 的帖子
这种运算取决运算符的结合性和优先级,不过好像很少有人去这样写程序,自己读起来都不方便啊!
----------------解决方案--------------------------------------------------------
opinion
这种运算取决运算符的结合性和优先级,++是先取j得值,由于j是1,整个||式子为真。后面就不算了,但j自己要加一,k就不自加了。
但对于&&左边为真,还要计算右边,所以i也自加。
即对于||只要一边成立就都成立,而&&需要两边都成立,在变成中一定要特别注意这一点
----------------解决方案--------------------------------------------------------
那如果是
int x=3,y=4,z=5;
表达式!(x>y)+(y!=z)||(x=y)&&(x-z)的结果是多少?
----------------解决方案--------------------------------------------------------
2..
----------------解决方案--------------------------------------------------------
  相关解决方案