C语言中一共有以下几类操作符:
算术操作符:
+ 加:左右操作数适用于整型和浮点型数。
- 减:左右操作数适用于整型和浮点型数。
* 乘:左右操作数适用于整型和浮点型数。
/ 除:左右操作数适用于整型和浮点型数。
% 模运算或求余:左右两边接受两个整型操作数,返回值是余数而不是商。
移位操作符:
左移位操作:<< 左边移除出位丢弃,右边空位用0补齐填充
右移位操作:>> ●逻辑移位:左边移入的位用0填充
●算数移位:左边移入的位取决于符号位(符号位为1,用1填充;符号位 为0,用0填充)
标准说明:无符号值执行所有移位操作默认就是逻辑移位;但对于有符号数,到底采用逻辑移位还是算术移位就取决于编译器。
位操作符: &AND(与):
|OR(或):
^XOR(异或):两位二进制相同为0;不同为1.
赋值运算符: = 赋值是表达式,表达式就具有一个值;其值就是赋值表达式左值的新值。
结合性(求值顺序):从右到左。
符合赋值符: += -= *= /= %=
<<= >>= &= ^= |=
单目操作符:
!逻辑取反操作,这个操作符产生一个整型结果0或1
~对整型类型操作数进行求补操作,
++要求操作数是一个左值。
--要求操作数是一个左值。
+ 产生操作数的值;换而言之,它什么也不干。之所以提供这个操作符,是为了与“-”操作符组成对称的一对。
- 产生操作数的负值
& 取地址
* 间接访问
(类型)强制类型转换
sizeof 判断它操作数的类型长度(以字节为单位)例:sizeof(int);sizeofx;
注:判断表达式长度并不需要对表达式进行求值,所以sizeof(a=b+1)并没有向a赋任何值。
关系操作符: ◇产生的结果是一个整型值,而不是一个布尔值;
◇如果两端的操作数符合操作符指定的关系表达式的结果为1(非0值为真),否则为0(假);
◇关系操作符的结果是整型值,所以可以赋值给整形变量
> >= < <= != ==
逻辑操作符:
&& 逻辑与 &&左边的表达式为假,右边的就不执行;只有两边都为真,整个表达式结果才为真
|| 逻辑或 左边的表达式为真,右边的表达式不再执行;左边为假,右边才会执行;只要左边或者右边中有一个为真,整个表达式结果就为真
注:位操作符和逻辑操作符容易混淆, 区别:
1、&&和||操作符具有短路性质,如果表达式的值根据左值可以决定;它就不再对右 操作数求值;与之相反,|和&位操作符两边的操作数都需要进行求值。
2、逻辑操作符用于测试0值和非0值,而位操作符用于比较它们的操作数中定义的位。
条件运算符: (a?b):c a为真(非零值)则进行b,a为假则进行c。
逗号操作符: , 逗号操作符用于将两个或着多个表达式分隔开,这些表达式至左向右逐个进行求值,整个逗号表达式的值是最后那个表达式的值。
下标引用、函数调用和结构成员:
1.[ ]操作数:一个数组名+一个索引值
例如:int arr[10]
arr[1]=0
2.()函数调用操作符 接受一个或者多个操作数,第一个操作数是函数名,剩余的操作数是传递给函数的参数。
3.结构体操作符
. 结构体.成员名
-> 结构体指针->成员名