#include<stdio.h>void main(){int x=3,y=4;x=(y++)+x}

#include<stdio.h>
void main()
{
int x=3,y=4;
x=(y++)+x;
printf("%d,%d\n"),x+y,x/=2;
}

这道题的结果是8,3.怎么会这样?可以解释一下吗?

编译器不同是有点差异的,如果非要一个解释,那我只能说你这个编译器的printf函数输出也是有优先级的,它先执行了x/=2这一步,再执行x+y这一步,最后才把值打印出来。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-06
目测,应该是输出12,3
x=(y++)+x; 等同于 x=y+x;y=y+1; 现在x=7;y=5;

x /= 2;等同于 x=x/2; 因为x是int型的,取整 x=3追问

可是我在vc上面跑了一下,是8,3没有错啊!好纠结。。。。

追答

用C#跑了一下,是12,3

第2个回答  2015-01-06
我用java跑了一下 是12,3