操作符讲解1---C语言(一)

简介: 操作符讲解1---C语言(一)

前言:


 博主这几天都在积累知识,俗话说:”只有多输入才能有输出”。在写博客之前,也是要沉淀的嘛(当然有不排除博主有点累想休息会,呜呜),为了不辜负志同道合的同志们的期望,我又来啦!


1.什么是操作符


 在讲各种操作符之前,可以先了解一下什么是操作符,操作符是干什么的等一系列问题。



 其实操作符就是对数据进行相应的运算操作,是C语言固定下来的一套语法。比如这里的+、*是算术操作符,sizeof()是单目操作符等还有一系列操作符,我们接着往下看吧!


2.算术操作符


 算术操作符有:+、-、*、/、%。


 相信大家对加法、减法、乘法、除法都不陌生,而对%(取模)操作符感到不知所措,乍一看,脱口而出可能就是百分号,实际不是,请听我娓娓道来~


/(除号)

得到被除数与除数的商

%(取模)

得到被除数与除数的余


 在进行除法运算的时候,有分以下两种情况:


整数除法


由于整数除法得到的是表达式的商,所以a/b得到的结果是3。


小数除法


 上面的整数除法并没说得到的结果是3.33333...,而是只得到3,这是因为/两边的操作数(操作符操作的数据)都是整型,所以它只保留除后的商的整数部分。小数除法就不一样了,得到的商在数值上就是数学意义上的值,并且没有说只保留商2.500000的整数部分2。


 总结:除法中,除数不能是0,计算机没有对这种做法进行定义;/得到的是商;/的左右操作数中,只要有一个是小数(浮点数),除法进行的就是小数除法,在数值上与数学一致。


 取模%操作符:



 取模操作得到的是余数,10除以3商3余1,由于进行的取模运算,得到的结果是1。


 总结:取模运算可以这样理解,仍旧是对两个操作数进行除法运算,然后取余数;注意一点的是,不能对浮点数进行取模运算;取模运算的除数不能为0(因为取模本质上还是除法,只是结果取值的方向而已)。


3.移位操作符


 移位操作符(左移操作符<<、右移操作符>>)用于对整数的二进制位进行移位操作,我们直接看代码:



 首先我们看到输出结果:我们用n>>1给m初始化,在后面打印n的时候,n还是4没有变,所以n进行右移操作后,并不会影响n本身(也就是没有把n改成2)。但如果右移的结果赋值给n,那就会改变了,比如 n = n >> 1;。


 右移操作丢弃掉右边越界的一位,补上左边空缺的一位,补位分两种:


算术右移的补位:算术右移在左边补上的是有符号数的符号位。

逻辑右移的补位:逻辑右移在左边统一补上0。

 一般编译器采取的是算术右移的补位机制,请看下面代码:



 如果我们这里进行的逻辑右移,那么将会得到一个很大的数字。



 补充:算术右移后的那一串二级制还是补码,为什么呢?因为移位操作符是对整数的补码进行移位的。还有在打印的时候,需要把补码逆着求原码。



 规律:右移一位得到的结果是数值除以2,左移一位是乘以2。假设现在有个0100(整型,前面的0都省略掉),数值是4。1所在的位置是2的2次方权重,当右移一位变成0010,权重变成了2的1次方,相当于除了个2。


 注意:一个整型有32位,那么最多只能移动31位,移动32位或更多是没有定义的行为;不能移动浮点数,只能对整数进行移位;移动的位数不能是负数,脑洞大开的人动了一下脑子写出:a >> -1,诶,右移负一位是不是就相当于左移1位,NO,这种行为没有被定义。

相关文章
|
23天前
|
存储 网络协议 C语言
【C语言】位操作符详解 - 《开心消消乐》
位操作符用于在位级别上进行操作。C语言提供了一组位操作符,允许你直接操作整数类型的二进制表示。这些操作符可以有效地处理标志、掩码、位字段等低级编程任务。
68 8
|
23天前
|
C语言
【C语言】逻辑操作符详解 - 《真假美猴王 ! 》
C语言中有三种主要的逻辑运算符:逻辑与(`&&`)、逻辑或(`||`)和逻辑非(`!`)。这些运算符用于执行布尔逻辑运算。
63 7
|
4月前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
88 0
|
4月前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
303 0
|
2月前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
51 10
|
2月前
|
存储 编译器 C语言
【C语言】简单介绍进制和操作符
【C语言】简单介绍进制和操作符
195 1
|
2月前
|
存储 编译器 C语言
初识C语言5——操作符详解
初识C语言5——操作符详解
191 0
|
4月前
|
C语言
C语言操作符(补充+面试)
C语言操作符(补充+面试)
48 6
|
4月前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
64 0
十一:《初学C语言》—  操作符详解(上)
|
5月前
|
C语言
五:《初学C语言》— 操作符
本篇文章主要讲解了关系操作符和逻辑操作符并附上了多个代码示例
46 1
五:《初学C语言》—  操作符