[C语言]-基础知识点梳理-运算符讲解

前言

各位师傅好,我是qmx_07,今天给大家带来 运算符的讲解,重点关注 移位操作符,以及位运算符,之后的内容会一直持续更新!

移位运算符

概念:移位运算符 主要是涉及到整型变量的二进制位进行修改,分别是 左移运算符、右移运算符

在正式讲解之前,我们先要介绍一下 原码、反码、以及补码

比如说 int n = -10;

原码: 1 0000000 00000000 00000000 00001010    转换成二进制数 ,最前面的0那个位是 正反位,0为正数,1为负数

反码:1 1111111 11111111 11111111 11110101   把原码 除了正反位不动,其他位置变一下

补码:1 1111111 11111111 11111111 11110110    简单来说,就是+1

还有最重要的一点:

正数的 原码 反码 补码,都是相同的

可能上面会有小伙伴疑问,为什么是32位呢,这是因为 整型占四个字节,一个字节八位

左移运算符

左移运算符,使用整型的补码进行向左移动,左抛右补

根据上面的运算,结果应该是20

需要注意一点是,改变变量值,需要重新赋值才可以

右移运算符

右移运算符涉及到逻辑移位和算术移位,我介绍的是比较常用的:左边用原该值的符号位填充,右边丢弃

注意要用 补码运算

特别说明:对于移位运算符,不要移动负数位,这个是标准未定义的。

位操作符

& //按位与
| //按位或
^ //按位异或

这些操作符同样是在 二进制位下进行运算的,并且只能是整型

按位与

在补码的基础上,去对比二进制位数,都是1 才为1

 按位或

或运算 有1就是1

按位异或

相同为0,相异为1

算术操作符

+  -  *  /  % 这些都是很常见的数学运算符,主要讲解最后一个

10/4 = 2 ....2  %这个符号,就是取余数

关系运算符

1.>
2.>=
3.<
4.<=
5.!= 用于测试“不相等”
6.== 用于测试“相等”

------------------------------------------------------------------------

举个例子

a= 15   b = 20

a > b     返回0 假

a  < b    返回1 真

逻辑运算符

&& 逻辑与 //只要出现假,整个语句就是假
|| 逻辑或 //只要出现真,整个语句都为真

条件操作符

exp1 ? exp2 : exp3
特点: exp1为真就执行exp2,exp1为假就执行exp3

  下面是这个程序的运行图:

赋值运算符

+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=
 

这些运算符我举个例子: int num = 10;   int a = 3;

我想要让a和num相加  如果写成 num = num + a; 是不是特别麻烦呀

可以简化成: num += a;  其他类似

单目运算符

!           逻辑反操作
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
~           对一个数的二进制按位取反
--          前置、后置--
++          前置、后置++
*           间接访问操作符(解引用操作符)
(类型)       强制类型转换

前置++、-- 后置++、--问题

sizeof讲解

&取地址 和 *解引用

再更具体的讲法,到后面指针 进行讲解

~取反

逗号表达式

exp1, exp2, exp3, …expN
特点:
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

if () 判断逻辑: a > b :1 >2 为假 不进入,a + b > 0: 1 + 2 = 3 > 0 ,是逗号表达式 以最后为主

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值