急求,一个c语言问题!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:04:39
#include <stdio.h>

void main()
{
int j = 5, i = 5;
int q, p;
p = (i++)+(i++)+(i++);
q = (++j)+(++j)+(++j);
printf("%d,%d,%d,%d",i,j,p, q);
}
答案是多少分别,是怎么计算出来的 要详细一点的

输出8,8,18,21

p = (i++)+(i++)+(i++);

第一个i++先返回了i的值5,然后加1,变成了6

第二个i++先返回了i的值6,然后加1,变成了7

第三个i++先返回了i的值7,然后加1,变成了8

所以p=5+6+7=18,i=8

q = (++j)+(++j)+(++j);

第一个++j先j加1变成了6,再返回j的值6

第二个++j先j加1变成了7,再返回j的值7

第三个++j先j加1变成了8,再返回j的值8

q=6+7+8=21,j=8

最后输出8,8,18,21

8,8,15,24
i++是先计算后自加,也就是先算完p=i+i+i(此时i=5)后而对每个i加1,而++j相反,即先对每个j加1后(此时j=8)再计算q=j+j+j;

数学问题?

结果是5 8 21 21 i++,i不会变++j,j会变,p=6+7+8,q=6+7+8

VC++ 6.0的运行结果是8 8 15 22
我也想不通
请哪位高手解答一下