C语言处理数据的工具------操作符

本文详细介绍了C语言中的各种操作符,包括算术、移位、位操作符如按位与、按位或、按位异或,赋值和复合赋值符,单目操作符如逻辑反、取地址、按位取反,关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用,函数调用,结构成员,以及表达式求值的相关规则和注意事项。通过实例解析了操作符的用法和效果,帮助读者深入理解C语言操作符的运用。
摘要由CSDN通过智能技术生成

●🧑个人主页:你帅你先说.

●📃如果文章有帮助,欢迎点赞👍关注💡收藏💖

📖既选择了远方,便只顾风雨兼程。

🤟欢迎大家有问题随时私信我!

●🧐版权:本文由[你帅你先说.]原创,CSDN首发,侵权必究。

目录

1.算术操作符

2.移位操作符

3.位操作符

3.1 &(按位与)

3.2 |(按位或)

3.3 ^(按位异或)

4.赋值操作符

5.复合赋值符

6.单目操作符

6.1!(逻辑反操作) 

6.2 sizeof

6.3 ~(按位取反)

6.4 &取地址

6.5 *解引用操作符

6.6 ++、-- 操作符

7.关系操作符

8.逻辑操作符

9.条件操作符

10.逗号表达式

11.下标引用、函数调用和结构成员

11.1[ ] 下标引用操作符

11.2( ) 函数调用操作符

12.结构成员

13.表达式求值

13.1隐式类型转换

13.2算术转换

13.3操作符的属性


1.算术操作符

+                -                *                /                 %
1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除
法。
3. % 操作符的两个操作数必须为 整数 。返回的是整除之后的 余数
针对于/,要特别提一点
int ret = 9/2;
double ret = 9/2;

大家可能会认为9/2算出来是4是因为int整型,实际上不是,当你以double类型打印时结果是4.0,所以说这是‘/’自身的特点,并不是int类型造成的。

那要怎么算出4.5呢?

上面第二点提到了,只要有浮点数就执行浮点数除法,所以可以改成9.0/2或者9/2.0就能算出4.5了。

2.移位操作符

<< 左移操作符
>> 右移操作符

移位操作符,移动的是二进制

对于整数的二进制有3中表示形式:原码、反码、补码

正整数 - 原码、反码、补码相同

负整数

原码 - 直接按照数字的正负写出的二进制序列

反码 - 原码的符号位不变,其他位按位取反得到的

补码 - 反码+1

二进制的第一位为符号位,负数为1,正数为0

整数在内存中存储的是二进制的补码

那移位操作符是怎么对二进制进行移位的呢?

int a = 5;
int b = a << 1;

以32bit系统为例

算出来结果是10

 注意:此时a的值还是5,b的值是10,移位操作符并不对自身进行改变。

 刚刚上面是以左移操作符为例,实际上右移操作符遵循的规则和左移略有不同。

首先右移运算分两种:
1. 逻辑移位
  左边用0填充,右边丢弃  
2. 算术移位
左边用原符号位填充,右边丢弃

大部分编译器采用的是算术移位。

int a = -1;
int b = a >> 1;

图解

因为-1的原符号位是1,所以补1。

警告⚠ :
对于移位运算符,不要移动负数位,这个是标准未定义的。
 

3.位操作符

&  按位与

|   按位或

^   按位异或
注:他们的操作数必须是整数。

3.1 &(按位与)

int a=3 b=5;
c=a&b;

a的二进制 00000000000000000000000000000011

b的二进制 00000000000000000000000000000101

结果为       00000000000000000000000000000001

即只要有0即为0,其余不变(1向左移位按位与这个数可以找二进制里有几个1)

3.2 |(按位或)

a的二进制 00000000000000000000000000000011

b的二进制 00000000000000000000000000000101

结果为       00000000000000000000000000000111

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你帅你先说.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值