? ? ? 小小段子来一句:书籍是人类进步的阶梯,电子书就是人类进步的电梯。
? ? ? ?嗯,闲话不多说,今天让我们来了解操作符吧,开始喽!
目录
1.加减乘
2.除(/)
注意:
? ? ? 在两个整数的除法中,x/y后的结果实质上先经过/的零向取整处理,再进行赋值,
这里补充一下表达式的优先执行
3.取余(%)
注意:?当有符号时,余数也会带上负号(余数为0时还是0),与整数略有不同
4.移位操作符(>> ??<<)
注意
5.位操作符(| ,& ,^)
6.逻辑操作符(&&? , ||)
注意:短路运算
7.单目操作符
?7.1正负号(+ ???-)
?7.2sizeof()
?7.3按位取反(~)
?7.4逻辑反操作(!)
9.赋值操作符
10.复合操作符.等式左边不是常量
补充:
11.条件操作符(?:)
如图所示:若满足x>y,则返回x,反之返回y。
12.逗号表达式
啊,结束了,下次再见,有用的话宝宝们留个赞呗 !
1.加减乘
? ? ? ?c里的加减乘同我们实际生活功能相同,我们不做探究,看例子即可

2.除(/)
? ? ? c语言里的除法实质上是求商操作(零向取整,即正数取不大于其本身的整数,负数取不小于它本身的整数,都想0靠拢),如-5/2=-2 , 5/2=2,不是四舍五入的取整
? ? ? ?另外,同实际生活相同,0不能做除数,编译器不会报错,但计算结果有误,如下图第三次输入,没有结果输出,程序强制结束。
?
?
注意:
? ? ? 在两个整数的除法中,x/y后的结果实质上先经过/的零向取整处理,再进行赋值,
? ? ? ? 所以,即便用double(浮点型)接收也会产生精度丢失,如下

?
这里补充一下表达式的优先执行
? ? ? ?表达式一定是优先计算的,如下图: i == 10是一个表达式,执行逻辑运算,首先进行该表达式的运算,结果为真,即1,再执行printf的输出,因此输出为1

?
3.取余(%)
? ? ? 双目操作符(即有两个操作数 如3%5,3和5就是操作数),只能作用于整型,两边不可以出现double型,结果为余数


注意: ?当有符号时,余数也会带上负号(余数为0时还是0),与整数略有不同
4.移位操作符(>> ??<<)
? ? ? ?因为计算机的一切数据都是以二进制形式存储的,所以这里的移位移动的是二进制的位,
? ? ? 移位分为算术移位和逻辑移位,也有有符号型移位和无符号型移位之分,在这里我们只讲无符号位的移位(即正数的移位)

注意
A:移位操作不附带赋值操作 在表达式中不会传值

B:移位操作符也只能作用于整型(浮点型的存储方式不同,各位都有特定的含义,此处不深究)
C:二进制向右移位即*2,,向左移位即/2(正数)
5.位操作符(| ,& ,^)
? ? ?位操作符是用来对二进制形式进行操作的
? ? ’&’?: 按位与 操作符 ?比较两个数相对应的位数(比较的是补码) 两数均为1结果为1,否则为0
? ? ’|’?: 按位或 操作符 ??比较两个数相对应的位数(比较的是补码) 两数有1则为1,均为0则结果为0
? ? ’^’?: 按位异或 操作符 ?比较两个数相对应的位数(比较的是补码) 相同为0,相异为1
A:n^n=0;
B: n^1=n; ?(n和x,y指三个不同的数)?
C:n^x=y,n^y=x — 可用于做基本的解密

6.逻辑操作符(&&? , ||)
? ? ? 即生活中的且运算与或运算,是一种逻辑运算
? ? ? 如你想要找两个人去搬桌子,叫甲和乙两个人去抬桌子,那么只有甲来,或只有乙来,桌子都是抬不走的(&&-逻辑与,两个条件都满足才为真,否则为假)。
? ? ?如果你想要和另一个人搬桌子,叫甲和乙来帮忙,只有有一个人来了,桌子就可以抬走。(||-逻辑或,只要有一个条件满足,结果就为真,都不满足时结果才为假)。
在c90标准下并不支持布尔类型(即True和False),因此逻辑真假在c中被实体化为0和1
注意:短路运算
A:
&&的短路求值:(a条件&&b条件)
? ? ? &&是逻辑运算,取两边表达式的逻辑值进行运算,那么首先运算的是两边的表达式,其实是先运行左边的表达式,再运行右边的表达式,但既然有一个条件不满足就为假,那么在a条件不满足后就完全没必要进行b条件的判断了,因此b表达式就不会被执行,发生短路。

B:
||的短路求值(a条件||b条件)
? ? ? ?||也是逻辑运算,顺序同&&相同,当a表达式为真时,就不必在执行b表达式了,此时b不被执行,被短路。

7.单目操作符
?7.1正负号(+ ???-)
可以与操作数结合作为表达式

?7.2sizeof()
单目操作符,不是函数,计算变量或类型的空间大小,计算变量时可以不加括号,但计算类型必须加括号

?7.3按位取反(~)
即将所有二进制位都取反(0变成1,1变成0)

?7.4逻辑反操作(!)
逻辑运算,对逻辑结果取反(真变成假,假变成真)

9.赋值操作符
‘?= ’,注意赋值操作符的左边必须是可变量,不能是常量。
10.复合操作符.等式左边不是常量

补充:
十进制向二进制的快速转换(将原数按照2的n次方分解)
2^n,1后面n个0
如83=64(2^6,1后面6个0)+16(2^4,1后面4个0)+2(2^1,1后面1个0)+1(2^0,1后面没有0)? —— 1010010
11.条件操作符(?:)
? ? ?c语言中唯一的一个三目操作符,?前是一个条件,若满足条件,则执行中间,不满足则执行:后。

如图所示:若满足x>y,则返回x,反之返回y。
12.逗号表达式
由多个连续逗号构成的表达式,运算顺序始终由左至右,但结果以最后一个表达式为主
如下

?
啊,结束了,下次再见,有用的话宝宝们留个赞呗 !
?
|