自增自减完成后,会用新值替换旧值,将新值保存在当前变量中。
自增自减的结果必须得有变量来接收,所以自增自减只能针对变量,不能针对数字,例如2++
就是错误的。
需要重点说明的是,++ 在变量前面和后面是有区别的:
- ++ 在前面叫做前自增(例如 ++a)。前自增先进行自增运算,再进行其他操作。
- ++ 在后面叫做后自增(例如 a++)。后自增先进行其他操作,再进行自增运算。
自减(--)也一样,有前自减和后自减之分。
#include <stdio.h>
int main()
{
int a = 10, b = 20, c = 30, d = 40;
int a1 = ++a, b1 = b++, c1 = --c, d1 = d--;
printf("a=%d, a1=%d\n", a, a1);
printf("b=%d, b1=%d\n", b, b1);
printf("c=%d, c1=%d\n", c, c1);
printf("d=%d, d1=%d\n", d, d1);
return 0;
}
// 输出如下:
// 首先对于a,b,c,d的最终值都没有疑问
/*
a=11, a1=11 a是前自增,先进行自增运算,再进行赋值运算
b=21, b1=20 b是后自增,先进行赋值,再进行自增运算
c=29, c1=29 c是前自减,先进行自减运算,再进行赋值运算
d=39, d1=40 d是后自减,先进行赋值运算,再进行自减运算
*/
#include <stdio.h>
int main( void )
{
int m = 5;
if ( m++ > 5) printf("选择一:%d/n", m);
else printf("选择二:%d/n", --m);
printf("第一次打印:%d/n", m);
printf("第二次打印:%d/n", --m);
printf("第三次打印:%d/n", m--);
printf("第四次打印:%d/n", m);
return 0;
}
// 输出如下:
/*
选择二:5 判断语句中m是后自增,所以先进行比较运算得到false,再进行自增运算m得到为6。然后m前自减,先自减,再匹配过去,所以是5。
第一次打印:5
第二次打印:4
第三次打印:4
第四次打印:3
*/