1. 浅谈自增自减运算符
c
语言中存在着一种神奇的运算符——自增自减运算符:
- 自增运算符:
++
- 自减运算符:
--
他们虽然由两个符号组成,但是确实是货真价实的单目运算符,功能是将运算对象的值减少或者增加一个单位值。不过值得注意的是:
- 不能作用于结构体变量
- 不能作用于常亮或者表达式
如以下两种情况都是错误的:
++100; //作用于常量
int a = 2;
(a+10)++; //作用于表达式
2. a++和++a的区别
自增自减运算符都存在,前缀形式和后缀形式,以下内容全以自加运算符++
为例,自减运算符同理。
- 前缀形式(
++a;
)表示:将变量(a
)增加一个单位,表达式(++a
这个整体)的值是变量(a
)增加后的值。 - 后缀形式(
a++;
)表示:将变量(a
)增加一个单位,表达式(a++
这个整体)的值是变量(a
)增加前的值。
而二者相同之处在于经过这次运算之后,a
的值都变成了a+1
;不同的是,就数值大小而言,此时a++ = a
、++a = a+1
。用一个例子可以很好的理解这其中的差别,代码如下:
#include<stdio.h>
int main(){
int a1 = 2, a2 = 2;
//这里相当于用a1和a2代表a进行了两次实验
printf("a++ = %d, a = %d", a1++, a1);
printf("\n"); //换行更美观
printf("++a = %d, a = %d", ++a2, a2);
return 0;
}
运行程序输出的结果为:
a++ = 2, a = 3
++a = 3, a = 3
通过这个例子可以较好的理解a++
和++a
的区别:二者的结果都是让a
的值变成了a+1
,不过前者的值是a
增加之前的值,后者的值是a
增加之后的值。