C语言操作符的使用详解(1)

操作符的分类

朋友们,追秋再一次和你们见面啦!!!!
操作符是我们在学习C语言的一个重要的基础知识,掌握它们,可以让自己变得更加优秀。

算术操作符

算数操作符一共有五个,如下图所示:
在这里插入图片描述
在这些操作符中,大多数的运算法则都是大家所熟悉的,当然有的操作符会有一些其它的运算法则,下面我给大家细细讲解:

/ 操作符

首先是 / (除号)操作符,对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。下面用一组例子来给大家解释一下:
C语言操作符的使用详解(1)_第1张图片
可以看到其实5。0/2.0的结果是可以得到2.5这个通过正常运算所得到的数字,不过因为X是用整形的形式来接受,所以只保留了整数位;而浮点型float就可以保留小数位。同样可以得到这个结果的类型还有double****类型,这里不给大家一一举例了。
当然,说到这里,肯定就有家人们要问了,那怎么样才能只保留小数点后面一位或者两位呢?下面直接上代码:
C语言操作符的使用详解(1)_第2张图片
显然,我们只需要在输出函数处加上一些小小的改变就行,具体看上图。

%操作符

% 操作符的两个操作数必须为整数。返回的是整除之后的余数
下面看代码:
C语言操作符的使用详解(1)_第3张图片

移位操作符

注:移位操作符的操作数只能是整数

整形二进制的组成

而其中,移位操作符操作的是整数的二进制序列,那什么是二进制序列呢?下面给大家讲解一下:
整数的二进制表示形式有三种:原码、反码、补码
二进制数由符号位和数字位组成,共计32bit位,其中8bit位为一个字节,这个接下来会给大家带着补充。

原码

原码:按照数值的正负,直接写出的二进制序列就是原码,下面举例:
C语言操作符的使用详解(1)_第4张图片
注:0当成无符号数处理!

反码

反码:原码的符号位不变,其他为按位取反;
C语言操作符的使用详解(1)_第5张图片

补码

补码:反码的二进制数+1就可以得到补码,如上图所示
做了这么多的铺垫,下面终于来到了操作符的环节了,话不多说,直接开始。

<< 左移操作符

移位规则:左边抛弃,右边补零,且是在操作数的二进制序列的补码上进行操作,下面给大家讲解一下:
正数:
C语言操作符的使用详解(1)_第6张图片
上面是操作符的运算结果,下面给大家讲解原理:
C语言操作符的使用详解(1)_第7张图片
负数:
C语言操作符的使用详解(1)_第8张图片
下面给出原理:
C语言操作符的使用详解(1)_第9张图片
其实大家可以发现,正数和负数的操作原理是相同的,也就是说,对于左移操作符来说,整数的操作是相同的。

>>右移操作符

右移操作符分为两种移位方式:
逻辑右移:右边丢弃,左边补零
算术右移:右边丢弃,左边补原符号位;正数补0,负数补1
下面给大家讲解一下算术右移:
C语言操作符的使用详解(1)_第10张图片
而逻辑右移大家可以发现,简单粗暴,与左移操作符的方式一样,但是对于负数的移动,会将对象改为正数,而在大多数编译器上都是采用算术右移,因此这里就不要给大家讲逻辑右移了。
通过上面的例子大家可以看到,不论是左移还是右移,会将操作数的大小变为原来的两倍或是变为一半,那移动两位呢?下面给大家举一些例子:
C语言操作符的使用详解(1)_第11张图片
因此我们可以得出,通过移位操作符可以改变的操作数的大小为2的倍数或是0.5的倍数;这就为以后大家在一些特殊的情况下使用起来提供一个便利的条件。
补充在使用移位运算符时,不要移动负数位,这是标准未定义的

位操作符

& //按位与

按位与:按(操作数的二进制数)位与
操作数的二进制数的补码,同为相比,有0则为0;两者为1才为1。下面举例说明:
C语言操作符的使用详解(1)_第12张图片
讲到这里,其实我们可以发现:通过移位操作符和按位与&操作符可以得到我们想要的操作数的任意二进制位的大小,下面举例说明:
在这里插入图片描述
:1的二进制序列除了第一位其余都是0,任意数按位与上0就可以得到最低为的大小,辅助以移位操作符就可以得到二进制位的任意位的大小。

| //按位或

按位或:按(操作数的二进制数)位或
操作数的二进制数的补码,同为相比,有1则为1;两者为0才为0。
C语言操作符的使用详解(1)_第13张图片

^ //按位异或

按位异或:按(操作数的二进制数)异或
操作数的二进制数的补码,同为相比,相同为0,相异为1。下面举例:
C语言操作符的使用详解(1)_第14张图片
下面将一个常用的用法:
在这里插入图片描述
因为0的二进制序列全是0,所以和其它数按位异或的时候,得到的数就是另一个数本身。
下面给大家分享一个例子:
不能创建临时变量(第三个变量),实现两个数的交换。
方法一:C语言操作符的使用详解(1)_第15张图片
方法二:
C语言操作符的使用详解(1)_第16张图片
该方法只适用于整形的交换,且可读性较差,请读者谨慎使用

注:他们的操作数必须是整数,且是对于补码进行操作

赋值操作符

复合赋值符

常见的赋值操作符大家早已了解,下面给大家将一个少见的:
C语言操作符的使用详解(1)_第17张图片

单目操作符

  • 负值
  • 正值
    & 取地址
    – 前置、后置–
    ++ 前置、后置++
    *间接访问操作符(解引用操作符)
    (类型) 强制类型转换

! 逻辑反操作

变假为真,变真为假
C语言操作符的使用详解(1)_第18张图片
C语言操作符的使用详解(1)_第19张图片

sizeof 操作数的类型长度(以字节为单位)

C语言操作符的使用详解(1)_第20张图片

sizeof和数组:

C语言操作符的使用详解(1)_第21张图片

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

下面用一个例子来说明作用:
C语言操作符的使用详解(1)_第22张图片
接着将该位改回原来的数值:
C语言操作符的使用详解(1)_第23张图片

关系操作符

<(小于) >(大于)
<= (小于等于) >=(大于等于)
!= 用于测试“不相等”
== 用于测试“相等”
警告:
在编程的过程中== 和=不小心写错,导致的错误

逻辑操作符

&& 逻辑与
|| 逻辑或

下面给上一个例子:
C语言操作符的使用详解(1)_第24张图片

条件操作符

exp1 ? exp2 : exp3
这里就是一个简单的逻辑问题,就不给大家细讲了

逗号操作符

exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
注:这并不代表只需计算最后一个表达式的值,因为前面的表达式的计算结果会影响最后一个表达式的结果

下标引用,函数调用和结构成员

基础知识,这里也不给大家讲啦啦啦啦啦啦(其实就是想偷懒一下哈哈哈哈哈)

好了,这次的分享就到这里了,感谢各位老铁们的阅读!!!!

期待下次见面,白白!!!!

你可能感兴趣的:(c语言,开发语言)