新人求助!有关自加自减运算符的使用
int x=5,y=5;int p,q,m,n;
p=(x++)+(x++)+(x++);
q=(++y)+(++y)+(++y);
m=(++x)+(--y)+(x++)+(y--);
n=(x--)+(y++)+(--x)+(++y);
printf("%d %d %d %d %d %d\n",p,q,m,n,x,y);
从q开始,为什么结果是22,是编译器版本的问题吗?按C语言的语法规则,p,q,m,n,x,y应该分别是多少? 这个问题原来解答过的一个帖子也问过了,你可以看一下,希望对你有帮助
http://bbs.fishc.com/thread-103186-1-1.html 本帖最后由 orino 于 2018-1-25 21:15 编辑
p=5+5+5
q=7+7+8
m=9+7+9+7
n=10+6+8+8
其实一个表达式不是直接就变成上面这样的1形式的,例如第2个(++y) + (++y) + (++y), 其实是从左边开始,先算最左边第一个的加法,但加法之前 括号里面有自增,所以先算自增,也就是 先把 第一个++i和第二个++i运算好,这时i变成了7,所以式子变成了 7+7+ (++i) ,也就是14+ (++i) ,14是中间结果保存。 同理要计算第2个加法,把第三个 ++ i 运算完,此时,i变成8, 式子变为14+8 orino 发表于 2018-1-25 21:12
p=5+5+5
q=7+7+8
m=9+7+9+7
好的,谢谢!
页:
[1]