C语言操作符操作符繁多但一共可以大致分为10大类
一、算术操作符
C语言提供所有常见的算术运算符+, - , * , / , %
- 注意除了 % 其他的运算符都支持浮点类型和整数类型,% 只适用整型
- 当 / 操作符两边都是整数时,返回值是整型。当两边或者有一边是浮点数时返回值是浮点型
二、移位操作符
1.左移操作符<<
我们知道数据在计算机中是以二进制存储的,那么对于一个八位数字左移几位就把二进制左边的几位依次移出去,这里写出19对应的二进制反码:并<<3;
这里左移三位,那么左移多出来的三位舍弃,
将右边缺的位补0;
2.右移操作符>>
右移操作符分为两种:逻辑右移 和 算数右移
逻辑右移
逻辑右移跟左移操作一样直接移动,空位补0
算数右移
算数右移则需要看原来的数的正负
如果是负数,则需要在右移后最高位补1表示负号
其余空位补0
不过大多数编译器都是算数右移,你也可以去尝试一下
三、位操作符
&按位与:有0为0全1为1
|按位或:有1为1,全0为0
^按位异或:相同为0,不同为1
四、赋值操作符
左值:能放在等号左边的值
右值:能放在等号右边的值
连等:注意运算顺序
int a,b;
a = b = 10;
在这里注意这个表达式需要从右往左看,先进行b = 10;运算,b的值变成10,接下来返回b的值的临时拷贝,并且赋值非a。所以a,b的值都是10。
五、单目操作符
1.逻辑反操作 !
C语言中0为假,非0为真。
2.负值 -
3.正值 +
4.取地址 &
&a 表示a的地址
5.sizeof
不妨先看看这段代码:
答案是
sizeof 接变量后边加不加口号都可以
sizeof +数组名求得的是数组长度 sizeof +类型,求得该类型的长度这里必须加括号
sizeof(b = a+2);sizeof 括号里的表达式不会执行,计算的仍然是b的类型大小
6.二进制取反~
7.–
8.++
注意前置和后置
9.*
10.()强制类型转换
六、关系操作符
>
<
>=
<=
!=
==
这里注意相等是两个等于号!!!!
七、逻辑操作符
逻辑与 && :都是逻辑真返回真
(a && b && c)
这里注意短路运算!!也就是只要第一个表达式a满足假,不成立就不在往下去运算b,c 的表示真假
逻辑与 || : 有一个满足逻辑真返回真
同样注意短路运算
八、条件操作符
expression1 ? expresion2 : expresion3
如果expression1成立为真(非0),整个表达式就是expression2的值
反之就是expression3 的值
九、逗号表达式
int s = a , c, b ,d
s的值最终是最后一个d 的值。但是要进行前边a,b,c表达式的运算
十、下标引用、函数调用和结构成员
1.下标引用操作符和间接访问等价
array[下标]
* (array + 下标)
2.( ) 函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
3.访问一个结构的成员
. 结构体. 成员名
-> 结构体指针->成员名