C语言操作符详解

本篇博客将为大家介绍C语言中的操作符,C语言中有很多的操作符,有些操作符前面大家应该有所了解。比如算数操作符、关系操作符、逻辑操作符等等;下面将为大家介绍更多的操作符,希望大家一键三连,多多支持!

1. 操作符的分类

关于操作符的详细分类,这里有一张图,大家请看

上图展示了C语言中的所有常用操作符,大家会发现,有一部分咱们前面学过,还有一部分可能有同学并不了解,没有关系,咱们下面来逐个介绍。由于上面的有些操作符与二进制有关系,所以这里必须先来介绍二进制的相关内容。

 2. 二进制和进制转换

其实我们经常能听到2进制、8进制、10进制、16进制这样的讲法,那是什么意思呢?其实2进制、8进 制、10进制、16进制是数值的不同表示形式而已。

这里我们重点介绍二进制:

首先我们还是得从10进制讲起,其实10进制是我们生活中经常使用的,我们已经形成了很多尝试:

 • 10进制中满10进1

 • 10进制的数字每⼀位都是0~9的数字组成

其实二进制与其类似:

 • 2进制中满2进1

 • 2进制的数字每⼀位都是0~1的数字组成

2.1 二进制转十进制

二进制转十进制时,二进制的每一位权重,从右向左,依次为2^0、2^1、2^2……

上图展现了二进制转换十进制的计算方法,相信大家可以轻松掌握。

2.1.1 十进制转二进制

这里拓展一下十进制转二进制的常见方法,大家请看下图

这种方法想必大家之前也接触过,这也是十进制转二进制的一种比较方便的方法。

2.2 二进制转八进制和十六进制

2.2.1 二进制转八进制

8进制的数字每⼀位是0~7的,0~7的数字,各自写成2进制,最多有3个2进制位就足够了,比如7的二进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算一个8进制位,剩余不够3个2进制位的直接换算。举个例子

通过上面的例子大家应该可以理解二进制转为八进制的方法了;这里还需要注意一下,0开头的数字会被当作八进制数字

2.2.2 二进制转十六进制

16进制的数字每⼀位是0~9,a~f的,0~9,a~f的数字,各自写成2进制,最多有4个2进制位就足够了, 比如f的⼆进制是1111,所以在2进制转16进制数的时候,从2进制序列中右边低位开始向左每4个2进制位会换算⼀个16进制位,剩余不够4个⼆进制位的直接换算。还是举个例子来看

上面的例子展示了二进制转十六进制的方法,这里大家需要注意,十六进制的数字前面需要加上0x

3. 原码、反码、补码

整数的2进制表示方法有三种,即原码、反码和补码,有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做符号位,剩余的都是数值位。 符号位都是用0表示“正”,用1表示“负”。

下面有几点注意事项:

正整数的原、反、补码都相同。

负整数的三种表示方法各不相同。

原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。

反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。

补码:反码+1就得到补码。

反码得到原码也是可以使用:取反,+1的操作。

对于整型来说,数据是以补码的形式存放在内存中的。这里可能有同学会有疑问,为什么是以补码的形式存放呢?

这里给大家拓展一下,在计算机系统中,数值⼀律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统⼀处理;同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

上面的内容大家了解即可,不需要额外记忆。

4. 移位操作符

<< 左移操作符

>> 右移操作符

这里注意:移位操作符的操作数必须是整数。

4.1 左移操作符

移位规则:左边抛弃,右边补0

上面展示了左移的操作,大家应该可以理解。然而,我们不仅要知道左移的操作,我们还需要了解它产生的效果,下面通过代码来演示左移操作符对数据产生的影响。

通过上面的代码,想必大家应该可以猜到左移操作符的作用了,它可以按照2的幂次去改变数据。

不过大家注意一下,当初始数据是0时,那么无论左移几位,结果都是0;

4.2 右移操作符

移位规则:右移运算分为两种,一种是逻辑右移,一种是算术右移,它们之间有一定的区别

1.逻辑右移:左边用0填充,右边丢弃 

2.算术右移:左边用原该值的符号位填充,右边丢弃

下面通过两张图展示一下两种方法

通过上面的两张图,大家应该可以理解两种右移的区别。

下面,将为大家展示右移操作符产生的效果,大家请看下面的代码

大家看完上面的代码。应该可以理解右移操作符的作用了,与左移操作符一样。它也可以按照2的幂次去改变数据

但是这里也有例外,当初始数据为0或者-1时。它们不会被右移操作符改变,大家请看下面的代码

说到这里,移位操作符就给大家介绍完了,最后,我还想提醒大家一点,就是移位操作符的操作数不能为负数,这个标准是未定义的,大家在使用的时候需要注意。

5. 位操作符

位操作符有四种,分别是

& 按位与

| 按位或

^ 按位异或

~ 按位取反

位操作符的操作数必须是整数

下面通过代码为大家展示它们产生的效果

5.1 &操作符

 大家可以看到,上面展示了&操作符的运算方法,它的运算规则很简单,就类似于数学里学的"并且“,当两边都是真时,结果才为真。

5.2 | 操作符

这里大家可以类比上面&操作符去理解。”|“操作符的运算规则是当两边都为假时,结果才为假。

5.3 ^ 操作符 

这里大家可以看到按位异或操作符的运算方法,即相同取0,不同取1。 

5.4 ~ 操作符 

这里大家直接来看代码

 按位取反,顾名思义,就是每一位都取反。

OK,上面为大家介绍了位操作符的相关内容,这里还需要为大家说明,我们在计算的时候,都是用补码进行计算的;而打印的时候打印的是原码对应的数据。

6. 单目操作符

单目操作符包括以下内容

上面展示的单目操作符中,我们除了&和*没有学,其他的前面大家应该都了解过,关于&和*。它们是指针里重要的操作符,后面说到指针时再为大家介绍。

7. 逗号表达式 

逗号表达式的内容很简单,它的表示形式如下

这里大家需要知道逗号表达式的执行规则:从左向右执行,结果为最后一个表达式的结果。 

 8. 下标引用操作符

 这个在数组的学习中给大家介绍过,这里不做赘述。

 9. 函数调用操作符

 接受⼀个或者多个操作数:第⼀个操作数是函数名,剩余的操作数就是传递给函数的参数。

10. 总结 

本篇博客为大家介绍了C语言中的绝大部分操作符,剩余个别的会在后面的内容中陆续为大家介绍,操作符的内容属于基础内容,请大家重视对其的理解,在代码中适当使用。最后,希望本篇博客可以为大家提供帮助,如果存在错误,欢迎大家评论交流,谢谢!

  • 30
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值