先来看程序源码:
#include <stdio.h>
void main()
{
int a = 1;
printf("a = %d\n", a);
a = 1;
printf("a+++a+++a++ = %d\n", a+++a+++a++);
a = 1;
printf("(++a)+(++a) = %d\n", (++a)+(++a));
a = 1;
printf("(++a)+(++a)+(++a) = %d\n", (++a)+(++a)+(++a));
a = 1;
printf("(++a)+(++a)+(++a)+(++a) = %d\n", (++a)+(++a)+(++a)+(++a));
a = 1;
printf("(++a)+(++a)+(++a)+(++a)+(++a) = %d\n", (++a)+(++a)+(++a)+(++a)+(++a));
a = 1;
printf("(++a)+(++a)+(++a)+(++a)+(++a)+(++a) = %d\n", (++a)+(++a)+(++a)+(++a)+(++a)+(++a));
a = 1;
printf("(++a)+(++a)*(++a)+(++a)) = %d\n",(++a)+(++a)*(++a)+(++a)); /* 应该理解是4+4*4+5 */
a = 1;
printf("(++a)+(++a)*(++a)*(++a)) = %d\n",(++a)+(++a)*(++a)*(++a)); /* 应该理解是5+4*4*5 */
}
运行结果:
分析:
以(++a)+(++a)+(++a)为例
a = 1;
第一步:++a; a = 2;
第二步:++a; a = 3;
第三步:(++a)+(++a); 3+3 = 6; //注意
第四步: ++a; a = 4;
第五步:6+4 = 10;
关键: 表达式执行的顺序
编译环境: VC++6.0
注意:不同编译器上运行结果可能不同
参考: Linux C编程---一站式学习 ---C语言本质---运算符详解一章