谁能帮我看下 谭浩强 的C的题目的解答

来源:百度知道 编辑:UC知道 时间:2024/05/27 18:12:43
#include<stdio.h>
main()
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("i=%d,j=%d,m=%d,n=%d\n\a",i,j,m,n); //i=8 j=10 m=9 n=10
}

为什么结果 i=9 j=11

因为++这个自加的原因
i没有经过计算,所以=8
m是++i,因为++在i的前面,所以先计算i的值也就是i自加1,所i=2,然后把i的值给m,所以m=9,同时这时候i也=9
n呢是j++,因为++在j的后面,所以先把j的值给n,然后j才进行自加计算,所以这里n=10,j=11
所以最后的正确输出结果应该是:
i=9 j=11 m=9 n=10

那当然了,没看到m=++i;和n=j++;这两句吗?这两句会使i和j自增啊!所以i和j都会加1,变成9和11了