熟悉++和--的用法 特别注意在前和在后的区别
熟悉++和--的用法 特别注意在前和在后的区别
操作方法
- 01
下面看几个例子#include <stdio.h>main(){int a=0; printf("a=%d\n",a++); printf("a=%d\n",a);} ++在后,所以是先运算后递增,第一个a++ 相当于 a=a+1 也就是 a=0+1 此时的a本来就是0 所以第一个a结果是a=0,也就是=后面的那个a运算后,a=1,也就是递增后的结果,所以第2个结果是a=1,=号前面的那个a#include <stdio.h>main(){int a=0; printf("a=%d\n",++a); printf("a=%d\n",a);} ++在前 ,后递增再运算 ++a 也等于a=a+1 递增结果为a=1 运算结果也是a=1所以两个a都是a=1以下的程序就不说原因了,大家自己想#include <stdio.h>main(){int a=0; a++; printf("a=%d\n",a++); printf("a=%d\n",a);} 结果为a=1,a=2#include <stdio.h>main(){int a=0; a++; printf("a=%d\n",++a); printf("a=%d\n",a);} 结果a=2,a=2#include <stdio.h>main(){int a=0; ++a; printf("a=%d\n",a++); printf("a=%d\n",a);} 结果a=1,a=2#include <stdio.h>main(){int a=0; ++a; printf("a=%d\n",++a); printf("a=%d\n",a);} 结果a=2,a=2a++和++a你们有些应该有点晕了吧让我们用数学运算在了解一次int a=0,b=3;a=(b++)+(b++)+(b++);++在后是先运算后自加 所以先运算 a=3+3+3 结果a=9然后b再自加,自加3次,所以b=6int a=0,b=3;a=(++b)+(++b)+(++b);++在前是先自加后运算 自加3次 先自加 b+1=4 存到第一个b里 b此时是4 再自加 b+1=5 存到第二个b里 b此时是5 再自加 b+1=6 存到第二个b里 b此时是6结果a=4+5+6 a=15 b=6注意在VC6.0编译器,这里的结果是a=16,b=6有的编译器结果还是这样 a=6+6+6=18 a=18所以根据编译器的不同结果也会不同,只限制为++在前的多运算,这个你也不需要太困惑,++在前的多运算我们很少用到#include <stdio.h>main(){int a=0,b=3;a=(b++)+(b++)+(b++);printf("a=%d\n",a);printf("b=%d\n",b);a=0,b=3; //变量a重新归零,b重新归3a=(++b)+(++b)+(++b);printf("a=%d\n",a);printf("b=%d\n",b);} 结果a=9 b=6a=16 b=6如果int a=1,b=2,c;c=a++*b 结果是多少?c=a++*b可以看成c=(a++)*b 等于 a*b a++++在后先参与运算后递增 先a*b 后a++结果c=2c=++a*b 可以看成c=(++a)*b 等于 ++a a*b++在前先递增后参与运算 先++a 后a+b结果c=4下面是程序:#include <stdio.h>main(){int a=1,b=2,c=0;c=a++*b;printf("c=%d a=%d\n",c,a);a=1,b=2,c=0;c=++a*b;printf("c=%d a=%d\n",c,a);a=1,b=2,c=0;c=a++*b++;printf("c=%d a=%d b=%d\n",c,a,b);a=1,b=2,c=0;c=++a*++b;printf("c=%d a=%d b=%d\n",c,a,b);补充 :a--和--a的用法也是一样的++和--运算符非常高效,++和--编译后值生成一条语句,而用+1或-1进行加1或减1不会总是这么高效