操作符是我们学习编程不可或缺的一部分,熟练掌握操作符是我们学好编程的基础。但是C语言的操作符它的品种繁多,为了便于解释,我将按照操作的功能或它们的使用方式对它们进行分类。
1.算数操作符:
+ - * / %
例如:c = a+b; c = a-b; c = a*b; c = a/b; c = a%b;
注意:(1)除了%操作符,其余几个操作符都是既适用于浮点类型又适用于整形类型。
(2) 当‘/’操作符的两个操作数都是整数时,它执行整除运算,在其他情况下则执行浮点数除法。
(3)‘%’为取模操作符,他接受两个整形操作数,把左操作数除以右操作数,但它返回的值是余数而不是商。
2.位移操作符:
<< 左值操作符
移位规则:左边抛弃,右边补零;
例如:int num = 10;
00000000000000000000000000001010 // num在内存中的二进制 |
000000000000000000000000000010100 // num左移一位的结果,将左边的0去掉,右边补齐,结果为20 |
首先,右移运算分两种:逻辑左移和算数右移
左移:左边用0填充,右边丢弃;
右移:左边用原该值的符号位填充,右边丢弃。
例如:int num = -1;
11111111111111111111111111111111 内存中-1的补为32个1. |
111111111111111111111111111111111 算数右移:左边用该原值的符号位填充,右边舍弃. |
011111111111111111111111111111111 逻辑右移:左边补0,右边舍弃. |
3.位操作符:
& 按位与
例如:3的二进制为 00000011 (补码,下同)
5的二进制为 00000101
则3&5为 00000001 即3&5=1,相同为真,不同为假
| 按位或
3 00000011
5 00000101
则3|5为 00000111 即3|5=7,只要有一个就为真
^ 按位异或
3 00000011
5 00000101
则3^5为 00000110 即3|5=6,只要有一个就为真,同为1为假
4.复合赋值符:
+= -= *= /= %= = >>= <<= &= |=
5.单目操作符:
!逻辑反操作
- 负值
+ 正值
& 取地
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置,后置--
++ 前置,后置++
* 间接访问操作符
(类型) 强制转换类型
6.条件操作符:
exp1 ? exp2 : exp3
即表达式exp1成立,则返回表达式exp2,否则返回表达式exp3.
7.逗号表达式:
exp1,exp2,exp3,exp4,......expn
逗号表达式,从左到右依次执行。整个表达式的结果是最后一个表达式的结果。
8.下标引用,函数调用和结构体成员
(1) [ ]
操作数:一个数组名+一个索引值
(2)( )
函数调用操作符
(3)访问一个结构体的成员
. 结构体.成员名
->结构体指针->成员名
以上就是我们常用的操作符,熟练掌握它们有助于我们今后更好的学习。