关于c语言自加运算的问题(a++)

先来看程序源码:

#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语言本质---运算符详解一章


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章