C语言中操作符介绍

Posted bit_zhy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中操作符介绍相关的知识,希望对你有一定的参考价值。

操作符介绍

(1)移位操作符

在这里插入图片描述

该种操作符,是在某个变量的二进制位上左移/右移n位例如:
00000000000000000000000000001011 该二进制表示十进制数字11
如果利用左移1位那么二进制表示结果变为
00000000000000000000000000010110(左边0去掉右边补一个0)
此时,代码表示结果为22,我们在这里利用C语言验证一下:
在这里插入图片描述
很明显,答案正确。

(2)位操作符

在这里我们介绍三种位操作符:1.& 2.^ 3.|

&的用法:

&表示二进制与,什么是二进制与呢?这里的与,其实和逻辑与是一个意思,二进制与就是在两个二进制表示之中每一个位分别与,我们还是用上述的11和22来举例说明一下:
00000000000000000000000000001011为11
00000000000000000000000000010110为22
那么进行二进制与后得到:
00000000000000000000000000000010,为2,我们还是利用代码验证一下。在这里插入图片描述
其实二进制异或(^)和二进制或(|)也是一样的道理。我们都用11和22来举例。

^的用法:

00000000000000000000000000001011为11
00000000000000000000000000010110为22
进行二进制异或后得到:
00000000000000000000000000011101,为29,代码实现:在这里插入图片描述

|的用法:

00000000000000000000000000001011为11
00000000000000000000000000010110为22
进行二进制或后得到:
00000000000000000000000000011111,为31,代码实现:在这里插入图片描述

(3)赋值操作符

在这里插入图片描述
事实上,这些赋值操作符,都是在=基础上简化了某些赋值方法
在=后边的所有操作符其实意义都一样,我们在这里拿+=举例:
如果要将a+1的值赋给a,那么我们的操作有两种:
1.a=a+1 2.a+=1,也就是说两式意思完全相同。之后的所有赋值操作符也是这个意思。

(4)单目操作符

只要我们仔细观察,不难发现,上边的所有操作符,操作数都有两个,例如移位操作符,a向左移一位,那么对应的两个操作数就是a和1,那么这种具有两个操作数的操作符,我们称其为双目操作符,接下来我们要介绍的这几种是只有一个操作数的操作符。

逻辑反操作符:!

在C语言中,非零表示真,零表示假。也就是说比方我们赋值一个非零数给了某个变量,该变量为真,如果对它进行逻辑反操作那么得到的就是零,在这里不得不提一句,因为非零的数有很多,那么如果我们对一个假的变量逻辑取反,得到的其实是零,这也就意味着,C语言中默认以1来代表真。
值得一提的是,如果我们想要的条件操作符是不等于,那么需要以!=来表示不等于。

对一个数的二进制按位取反:~

在介绍这个符号之前,我想先讲述一下电脑对于二进制数的存储。
一个数的二进制有三种表达方式:原码,反码,补码。
对于正数而言,它的原码反码补码相同。
而对于负数而言,它的原码反码补码是需要经过计算的。

一个有符号的数,其二进制表示最高位是符号位,符号位为0意为正,为1为负
正数我们拿11来举例
原码:00000000000000000000000000001011
反码:00000000000000000000000000001011
补码:00000000000000000000000000001011
负数我们拿-11举例
原码:10000000000000000000000000001011
反码:符号位不变,其他位按位取反。则:
反码:1111111111111111111111111111111110100
补码:在反码的二进制序列加一,则:
补码:1111111111111111111111111111111110101
介绍完原码反码补码的概念后,我想告诉大家的是,电脑内存中储存的其实是数字的二进制补码,计算时也是利用补码计算而非其原码。那么其实~的用法是什么呢,就是对某个数的补码按位取反,然后输出这个取反之后的数,但是在输出时,想要确定这个数,需要通过计算推出该数的原码,进而推出该数。我们这里利用-11的例子来举例帮助理解:
在这里插入图片描述
在这里插入图片描述

前置后置++,–

这种操作符常见在循环语句中,其实就是自增(++)自减(–)
只不过在++/–前置后置上有所不同,如果是前置++/–,这意味着先自增自减,后自增自减,如果是后置++/–则意味着先使用后自增自减。我们利用一段代码来帮助理解。
在这里插入图片描述
在前两个代码中,number_1和number_2相等这意味着我们的值是先进行了自增自减后赋值的,后两个代码因为先使用,所以number_2保留了number_1 的初始值,之后的number_1才变化。

(5)条件操作符

在这里插入图片描述

这种操作符又被成为三目操作符,是唯一一种可以操作三个数字的操作符,他的意思是,exp1成立吗,如果成立(true)那么exp2,如果不成立(false)那么exp3。是一个很好的简化代码的操作符。我们这里利用一段代码帮助理解。在这里插入图片描述

(6)逗号表达式

在这里插入图片描述
利用逗号将每一段表达式隔开,式子的最终结果等于最后一个表达式的值,代码如下:在这里插入图片描述
逗号表达式中第一步先计算a=a-9使得这时a=-3,第二步计算b=a+4使得b=1,第三步也就是最后一步是c=b-6使得c=-5,那么d的值就是最后一个表达式的值也就是c的值-5,因此打印出d是-5.

总结

以上便是我觉得一些需要特别记忆的操作符的介绍和用法,希望我们一起进步,取得大厂offer!!!

以上是关于C语言中操作符介绍的主要内容,如果未能解决你的问题,请参考以下文章

C语言中memcpymemmove等内存函数的介绍

关于C语言操作符的总结

c语言strcpystrcmpstrcat等常见字符操作函数的介绍

C语言一操作符详解(各操作符介绍,表达式求值)

五c语言之操作符

五c语言之操作符