由于操作符以后会经常用到,面试题里经常会出现关于操作符的选择题,今天我就来总结一下C语言中常用的操作符。
我们常用的C语言操作符主要分为以下几种:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式下标引用、函数调用和结构成员。
1. 除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。
2. 对于/操作符如果两个操作数都为整数,执行整数除法,得到的结果是整数值。而只要有浮点数执行的就是浮点数除法,得到的结果是浮点数(也就是小数)。例如:1/2=0,1.0/2=0.5。
3. %操作符的两个操作数必须为整数。得到的是整除之后的余数。
移位操作符:<<、>>
<<左移操作符
左边抛弃、右边补0
右移操作符
首先右移运算分两种:
1. 逻辑移位
左边用0填充,右边丢弃
2. 算术移位
左边用原该值的符号位填充(0或1),右边丢弃
左边抛弃、右边补0
右移操作符
首先右移运算分两种:
1. 逻辑移位
左边用0填充,右边丢弃
2. 算术移位
左边用原该值的符号位填充(0或1),右边丢弃
位操作符:& (按位与)、|(按位或)、^(按位异或)
其操作数必须是整数,且均为二目运算
其操作数必须是整数,且均为二目运算
赋值操作符:= 可以给变量重新赋值
复合赋值符:+=、-=、*=、/=、%=、>>=、<<=、&=、|=、^=
这些运算符都可以写成复合的效果,比如"n += 1" 就是给变量n自加1
这些运算符都可以写成复合的效果,比如"n += 1" 就是给变量n自加1
单目操作符:
!逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置(先赋值再使用)、后置--(先使用再赋值)
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
关系操作符:>、>=、<、<=、!= (用于测试“不相等”)、== (用于测试“相等”)
逻辑操作符: && 逻辑与、||逻辑或
注:1&2--0,1&&2--1,1|2--3,1||2--1
条件操作符
exp1 ? exp2 : exp3
exp1 ? exp2 : exp3
先计算表达式1,若表达式1为真,直接到表达式2,若表达式1为假,则绕过表达式2,到表达式3
逗号表达式:就是用逗号隔开的多个表达式
exp1, exp2, exp3, …expN
逗号表达式,从左向右依次执行,整个表达式的结果是最后一个表达式的结果
下标引用、函数调用和结构成员
1. [ ]
操作数:一个数组名 + 一个索引值
2. () 函数调用操作符
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数
的参数
3. 访问一个结构的成员
. 结构体.成员名
-> 结构体指针->成员名