帮我分析下这个简单的C语言程序

来源:百度知道 编辑:UC知道 时间:2024/05/26 13:25:58
#include<stdio.h>
void main()
{
int a=5,b=5;
int j=0,k=0;
j=(++a)+(++a)+(++a);
k=(b++)+(b++)+(b++);
printf("a=%d b=%d j=%d k=%d\n",a,b,j,k);
}
为什么结果是这样?
为什么 j 不是等于21(6+7+8)

k 不是等于18(5+6+7)

j应该为24吧?!
这是先加后加的问题。
++i,为先加后引用。i++为先引用后加。
j=(++a)+(++a)+(++a);中a为先加后引用。a+1=6,a+1=7,a+1=8,j=a+a+a=24;
k=(b++)+(b++)+(b++);中b为先引用再加。
k=b+b+b=15,b=b+1=6,b=b+1=7,b=b+1=8;
j怎么会是22,我就不知道了。你是不是输出了啊?