进击的巨人闪退补丁:C语言超简单问题,但就是弄不懂。。。

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 07:56:04
下面这个程序的运行结果是什么?为什么?
#include <stdio.h>
main()
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(\"%d,%d,%d,%d\",i,j,m,n);
}
运行了得到9,11,9,10,为什么?

m=++i
这里是先把i自加,然后把i的值赋给m,相当于
i=i+1;
m=i;
所以显示出来的m,j分别是9,9

n=j++;则是先赋值,再自加,相当于
n=j;
j=j+1;
所以n,j的值就是11,10.

++在前,是先加,然后再运算
++在后,是先运算,然后再自加 1

i 先自加 变成9 然后赋值给m m也为9 所以输出i=9 m=9
n被j先赋值,然后j自加 变成11 所以输出j=11 n=10

m=++i 表示先累加再赋值 所以 m=i+1 i=i+1
n=j++ 表示先赋值再累加 所以 n=j j=j+1

++i 是先自加然后再负值
j++ 是先负值在自加