例题
有如下C程序:
#include
int main()
{
inti=0;
int a=(i++)+(i++)+(i++);
int b=(++i)+(++i)+(++i);
printf(“%d\n”,a);
printf(“%d\n”,b);
printf(“%d\n”,i);
return 0;
}
运行结果如下:
为什么会出现这个结果呢?
分析:
对于int a=(i++)+(i++)+(i++);进行的计算过程为i++为0再计算i++为0再计算a=i+i=0然后计算i++为0再计算a+=i为0
对于a计算完成但是对于该过程的i的计算还未完成;接着计算i=i++=1;i=i++=2;i=i++=3.
对于int b=(++i)+(++i)+(++i);进行的就是过程为++i为4;++i为5;b=i+i=10(注:因为此时的i已经为5所以i+i为5+5不再是4+5)接着计算++i为6接着a+=i+16。
本文来源:https://www.2haoxitong.net/k/doc/029a9ecd33687e21ae45a965.html
文档为doc格式