C语言:n++ , ++n,n--,--n
#include <stdio.h> int main() { int a=3,x; x=(a++)+(++a)+(++a); // 3(4) 5(5) 6(6) printf("%d,%d\n",a,x); x=(a--)+(--a)+(--a); //6(5) 4(4) 3(3) printf("%d,%d",a,x); getchar(); }
自增自减完成后,会用新值替换旧值,将新值保存在当前变量中。
自增自减的结果必须得有变量来接收,所以自增自减只能针对变量,不能针对数字,例如10++就是错误的。
需要重点说明的是,++ 在变量前面和后面是有区别的:
++ 在前面叫做前自增(例如 ++a)。前自增先进行自增运算,再进行其他操作。
++ 在后面叫做后自增(例如 a++)。后自增先进行其他操作,再进行自增运算。
自减(--)也一样,有前自减和后自减之分。
#include <stdio.h> int main() { int a = 10, b = 20; printf("a=%d, b=%d\n", a, b); ++a; --b; printf("a=%d, b=%d\n", a, b); a++; b--; printf("a=%d, b=%d\n", a, b); return 0; }
结果:
a=10, b=20
a=11, b=19
a=12, b=18
#include <stdio.h> main() { int i=1,j=2,k=3; if (i++ ==1 && (++j ==3|| k++ ==3)) {printf("%d %d %d\n",i,j,k);} //当计算表达式i++ ==1时,自增优先级高,先计算i++,根据先使用后加1,所以i++值为1 //但i的值为2,i==1真; //++j ==3,先计算++j,根据先加1再使用的特点,++j的值为3,j的值也为3,所以j==3真 //由于||的特点,前者为真,则后面的不用计算,所以k的值不变 getchar(); }
结果:2 3 3