今天小编将通过几个简单的语句来使大家更好的理解自增、自减运算符。
首先先简单介绍一下自增、自减运算符的定义和使用。
自增运算符(++)和自减运算符(- -)都属于单目操作符(运算符两侧只有一个操作数)。++是一种自增的操作符,又分为前置++和后置++。- -是一种自减的操作符,也分为前置- -和后置- -。
那么自增运算符和自减运算符的使用,我们只需记住四条口诀。
前置++计算口诀:先加1,后使用;后置++计算口诀:先使用,后加1;
前置- -计算口诀:先减1,后使用; 后置- -计算口诀:先使用,后减1。
接下来通过几个简单语句来熟练运用++和- -,加强对其的理解
#include<stdio.h>
int main()
{
int a = 8;
printf("%d\n", ++a);
printf("%d\n", a++);
printf("%d\n", --a);
printf("%d\n", a--);
printf("%d\n", -a++);
printf("%d\n", a);
return 0;
}
运行后的结果如下图
a的初始值是8,第一个printf语句++a 先加1后使用,也就是8+1=9 , 9再赋值给a使用,该语句打印的结果就是9;
由于这个程序是连续的,所以对第二个printf语句来说,它的初始值是第一个语句执行完后a的值(变成了9),而不是最开始的初始值8!
第二个printf语句a++ 先使用后加1,9先赋值给a使用,打印的结果就是9。但请注意,该语句还未完成。“后加1”, 9+1等于10,也就是第二个printf语句的结果是10;
第三个printf语句- -a 先减1再使用,第二个printf语句的结果10-1等于9,9再拿去给a使用,打印的结果就是9;
第四个printf语句a- - 先使用再减1,第三个printf语句的执行结果9先拿给a使用,也就是打印9,“再减1”,9-1等于8,该语句最后的结果就是8;
第五个printf语句-a++ ,也就是-(a++), 先使用后加1,先使用a的话就是8,前面有个负号,打印的结果就是 -8,“后加1”指的是8加1,而不是-8加1。大家要注意“加1”“减1”的对象都是a。所以该语句最后的结果是8+1等于9;
第六个printf语句打印的结果就是a,也就是第五个printf语句最后的结果9,所以打印9。
粗鲁地理解“使用”就是:把某个值给a去用,在本题中就是需要把a打印出来。
到这里不知道大家理解了吗,还不是很清楚的话,可以练练下面这道题
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;
c = ++a;
b = ++c, c++, ++a, a++;
b += a++ + c;
printf("a = %d b = %d c = %d\n:", a, b, c);
return 0;
}
a,b,c的结果分别是什么呢?大家可参考下面的注释
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;
c = ++a;// ++a:加给a+1,结果为6,用加完之后的结果给c赋值,因此:a = 6 c = 6
b = ++c, c++, ++a, a++;
// 逗号表达式的优先级,最低,这里先算b=++c, b得到的是++c后的结果,b是7
// b=++c 和后边的构成逗号表达式,依次从左向右计算的。
// 表达式结束时,c++和,++a,a++会给a+2,给c加1,此时c:8,a:8,b:7
b += a++ + c; // a先和c加,结果为16,在加上b的值7,比的结果为23,最后给a加1,a的值为9
printf("a = %d b = %d c = %d\n:", a, b, c); // a:9, b:23, c:8
return 0;
}
答案是:a=9 ,b=23 ,c=8