引言
C语言中存在许多的操作符,而操作符又有许多不同的类型,现在我将把常用的操作符分类并进行解释
1.算术操作符
- 加法(+)和减法(-)
最简单的两个,不必多说了
- 除法(/)
要注意的是结果除法的结果是否会出现小数
1.‘/’两端的数字为整数
此时结果也为整数
2.‘/’两端的数字中至少存在一个小数
此时结果也为小数
因此我们在想在结果中得到小数时,可以在计算前乘(*)上一个1.0
例:
float x = 1.0 * 5 / 4; 这样就可以得到小数结果了
- 除余(%)
得到一个数除以一个数的余数
例:
int x = 5 % 3; x = 2;
- += 和 -= 和 %= 和 /=
意思为原本的数与后一个数进行计算,并且把结果赋值给自己
例:
x += 5 == x = x + 5
2.单目操作符
这一块主要是要弄清类似’a++’与‘- -a’的区别
- a++ 和 a- – 和 ++a 和- -a
a++ 和 ++a 都可以看作 a = a + 1, 但是顺序存在区别,a++是先使用a原本的值再给a加上1,而++a则是先给a加上1再使用a的值
例:
a = 5 b = ++a —> b = 6
a = 5 b = a++ —> b = 5
关系操作符
- 等于(==)
注意要打两个‘=’,如果只打一个等号则是赋值,无法作为进行判断的标注
- 不等于(!=)
- 大于(>)
- 大于等于(>=)
- 小于(<)
- 小于等于(<=)
注意:
1.关系操作符如果判断为真会返回1,为假则会返回0
2.注意关系操作符不要连用
例:
a<b<c == (a < b || b < a)(a<b )会返回1或0,再与c进行比较,不能达到我们的目的
应该写成 a<b && a<c
3.三目操作符
(条件判断式)?(a):(b)
如果条件判断为真则返回a,判断为假则返回b
例:
取最大值
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
4.逻辑操作符
- 并且(&&)
用于将两个条件判断式连起来,两个条件判断式同时成立时才会返回1,只要一个不成立则返回2
- 或者(||)
用于将两个条件判断式连起来,两个条件判断式只要其中一个成立时就会返回1,都不成立则返回2
- 逻辑非(!)
将一个表达式从真变为假,因为比较抽象难以理解,这里将给一个例子:
int x = 0;
if (!x)
{
printf(“x 为假(0)\n”);
}
这里会打印出 “x为假(0)”
5.位操作符
在了解位操作符之前,我们需要知道在数是正数时,数字的原码和反码是相同的,但是在数是负数时,计算时则要使用负数的补码进行计算(补码 = 原码取反+1)
- 按位与(&)
两个数对应的二进制上,两个同时为1为1,否则都为0
- 按位或(|)
两个数对应的二进制上,只要有1就为1,两个同时为0才为0
- 按位异或(^)
两个数对应的二进制上,相同为0,相异为1
- 按位取反(~)
直接将1转化为0,0转化为1
- 位操作符的应用
1.两个相同的数字异或为0 a^a = 0
2.0与一个数字异或等于这个数字本身 a^0 = 0
3.可以将数组里的所有变量异或,找出唯一一个没有偶数个数的数字
4.一个数字与1按位与可以判断这个数字的二进制最后一位是否为0
6.移动操作符
- 左移(<<)
将此数字的二进制往左移动一位,左边抛弃,右边补0(会改变符号位)
- 右移(>>)
1.逻辑右移(一般不会使用)
左边补0,右边抛弃
2.算术右移(常用)
左边补符号位,右边抛弃
7.指针与地址运算符
- 取地址(&)
取一个数或者变量的地址,通常用于传地址给函数修改实参,或者在scanf中使用
- 解引用(*)
通常用来解引用一个地址,详细的用法将在关于指针的文章中讲解
8.操作符的优先级顺序
() [] -> .
! ~ ++ — (type) sizeof
/ %-
<< >>
< <= > >=
== !=
&
^
|
&&
||
?:
= += -= …
,
总结
操作符的用法可谓是写代码的基础,希望大家能够熟练掌握!(^-^)

评论(5)