c语言 以下程序运行结果为什么是-2

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

x=-m++;
这一句, 自增在右, 先取值后计算, 所以x=-3, m=4
x=x+8/++n;
这一句, 自增在左, 先计算,后取值, 所以相当于:
x=x+8/5
根据优先级, 先计算8/5, 两边都是int, 计算结果只去整数部分, 所以相当于:
x=x+1
又因为x=-3, 所以:
x=-3+1
即: x=-2追问

自加自减优先于负号是么?

追答

不是, 自增自减去和符号是同级单目运算, 但是结合方向是从右向左, 所以先算自增自减, 然后取负号

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-03
x=-m++先算-m,x为-3
x=x+8/++n先算++n,n=5,再算8/n,由于都是整型,结果取整为1,最后x=x+1,所以为-2追问

自加自减优先于负号是么?

相似回答