/* 前段时间看完C语言后对自增和自减有理解的不是很好,于是在网上也看了一些相关的帖子。对此总算是将 这个问题解决了! 先看一个简单的; */ # include <stdio.h> void main() { int a, b, c, d; a = 5; b = 5; c = (a++) + (a++) + (a++); d = (++b) + (++b) + (++b); printf("a = %d, b = %d, c = %d, d = %d\n",a, b, c, d); } /* ======================运行结果==================== a= 8, b = 8, c =15, d = 22 Press any key to continue ------------------------------------------------- ======================说明======================= 对于自增和自减这个问题,我觉的最大的问题就在于自增或是 自减的(++ --)在前后的问题了;a++ ; ++b; ++a表示:a自增1后再与他其它运算; b++表示:b先与其他运算后再自增1; 自减和自增是一样的,我这里就不讲了; 下面再看几个例子; */ # include <stdio.h> void main() { int i = 3; int j = 4; i++; ++j; printf("i = %d, j =%d\n",i, j); } /* ========================运算结果================== i = 4, j =5 Press any key to continue -------------------------------------------------- ========================说明====================== 这个例子和上面的那个例子是一样的,可以说是上面的那 个例子的变形;所以这个例子我就不说了! 好了我们将上面的那个例子稍微改动一下; */ # include <stdio.h> void main() { int i = 3; int j = 4; int a = i++; //这里我们可以理解成a = 3; int b = ++j; //这里我们可以理解成b = (4+1); printf("a= %d,b= %d\n", a, b); /* ========================运算结果================== a= 3,b= 5 Press any key to continue -------------------------------------------------- ========================说明====================== 首先我们再回顾一下自增和自减的概念,然后i++和++j i++是先将3赋值给a然后再加1。 ++j是先将j的值加1后再赋值给b; 下面难度加点了! */ # include <stdio.h> void main() { int i = 3; int j = 4; int a = (i++) + (i++); int b = (++j) + (++j); printf("a = %d, b = %d\n", a, b ); } /* ========================运算结果================== a = 6, b = 12 Press any key to continue -------------------------------------------------- ========================说明====================== i++的理解应该是执行完整个表达式的其他操作后, 然后才自增,所以例子中的a=3+3=6;而后i再自增2次, i=5;相反,++j是先自增然后再参加其它运算, 所以b=6+6=12.