今天简单地来总结C语言中常用到的操作符
目录
算数操作符:
运算符 | 描述 | 示例 |
+ | 两个操作数相加 | int result = 3 + 4 ; // result = 7 |
- | 两个操作数相减 | int result = 6 - 2; //result = 4 |
* | 两个操作数相乘 | int result = 2 * 2; //result = 4 |
/ | 两个操作数相除 | int result = 4 / 3; //result = 1 |
% | 两个操作数取余 | int result = 5 % 3; //result = 2 |
注:
1.除了%操作符之外,其他的几个操作符可以用于整数和浮点数
2.对于/操作符,如果两个操作数都为整数,执行整数除法,而只要有浮点数执行浮点数除法
3.%操作符的两个操作数必须为整数,返回的是整出之后的余数
移位操作符:
操作数必须为整数
操作符 | 描述 | 示例 |
<< | 左移操作符 | int a = 2; int b = a << 1; b的结果是把a的二进制位向左移动一位得到的,b= 4 |
>> | 右移操作符 | int a = 10; int b = a >> 1; b的结果是把a的二进制位向右移动一位得到的,b= 5 |
具体操作过程:
左移:
右移:
右移操作符使用的是算数右移,规则为右边丢弃,左边补原位符号
对于正整数来说,原码,反码,补码相同
对于负数来说,存放在内存中的是二进制的补码
以-1为例:
负数的符号位为1,放在最前面
整数中的二进制表示形式有3种:
原码:直接根据数据值写出的二进制序列就是原码
反码:原码的符号位不变,其他位按位取反就是反码
补码:反码+1,就是补码
原码:100000000000000000000000000000001
反码:11111111111111111111111111111111111110
补码:11111111111111111111111111111111111111
位操作符:
注:他们的操作数必须是整数
操作符 | 描述 |
& | 按位与,有0为0 |
| | 按位或,有1为1 |
^ | 按位异或,相同为0,不同为1 |
实例:
&(按位与)
| (按位或)
^ (按位异或)
赋值操作符:
赋值操作符可以让你对之前不满意的值重新赋值
= | 基本赋值操作符 |
+= | 加赋值操作符 |
-= | 减赋值操作符 |
*= | 乘赋值操作符 |
/= | 除赋值操作符 |
%= | 求余赋值操作符 |
<<= | 左移赋值操作符 |
>>= | 右移赋值操作符 |
&= | 按位与赋值操作符 |
|= | 按位或赋值操作符 |
^A= | 按位异或赋值操作符 |
单目操作符:
! | 逻辑反操作符 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
-- | 前置、后置-- |
++ | 前置,后置++ |
* | 间接访问操作符(解引用操作符) |
(类型) | 强制类型转换 |
注:sizeof括号中的表达式不参与运算
&和*
关系操作符:
> | 大于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 用于测试“不等于” |
== | 用于测试“等于” |
注意:
在编程的过程中==和=不小心写错,会导致错误
两个字符串是否相等,不能使用==判断,可以使用strcmp()函数
逻辑操作符:
特点是判断真假
&& | 逻辑与,全部条件满足才成立 |
|| | 逻辑或,只要有一个条件满足就可以成立 |
条件操作符:
三目操作符
exp 1 ? exp2 : exp3
如果表达式1为真, 则执行表达式2,否则执行表达式3
逗号表达式:
exp1,exp2,exp3,.....expN
要从左向右依次计算,但整个表达式的结果是最后一个表达式的结果
下标引用,函数调用和结构体成员
1.[ ]下标引用操作符
操作数:一个数组名+一个索引值
2.()函数调用操作符,接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数
结构体成员访问操作符:
结构体是将不同类型的数据按照一定的功能需求进行整体封装,封装的数据类型与大小均可以由用户指定。
.结构体.成员名
->结构体指针 ->成员名
结构体定义由关键字struct和结构体名组成
struct 结构体名
{
成员列表
};
注意不能省略最后的分号
实例:
以上就是操作符的全部解析,有错误的地方希望大家能批评指正,觉得对你有帮助的别忘了👍和⭐哦。
参考文献:
百度文库,菜鸟教程