运算符用于表达对数据的操作。
常见的有,算数运算符、关系运算符、逻辑运算符。
简单的,计算机可以处理:加减乘除、比较大小、且或非等操作。
然而,计算机并不总是处理简单的指令。
处理复杂指令的时候,就要遵循一定的“规则”,即优先级和结合性。
一起认识一下C语言的运算符:
最上方白色部分:
( ):用法基本同四则运算。
[ ]:用于存放数组下标,不用于四则运算。
-> . :访问结构体的成员变量,以后再详细介绍。
本层级运算符,它们都表示一种所属关系,优先级最高也是有道理的。
最下方白色部分:
= :赋值运算符,用于内存中的变量赋值。
, :逗号运算符,用于分隔。
赋值运算符的结合性是自右向左。例如y=x+y; 先算右边x+y,再赋左边的y。
逗号运算符,它的功能很接近语句分割的分号(;),所以它的优先级最低也是最好理解的。
赋值运算符,只有计算出右侧结果,赋值才具有意义,所以它的优先级也很低。
中间彩色部分,从上至下:
淡蓝色,单目运算符;绿色,双目运算符;水蓝色,三目运算符。
(单目指一个操作数,双目指两个,三目指三个)
单目运算符介绍
!:逻辑非运算符,先算右侧值,再取非。
~ :按位取反运算符,内存中每一bit都取反(1变0,0变1)。
++ :自增运算符,变量值增1。注意区分前++和后++。
-- :自减运算符,变量值减1。注意区分前--和后--。
- :负号运算符。
(type):强制类型转换运算符。
* :指针运算符,计算指针变量所指向的数据。
& :取地址运算符,计算变量的内存地址。
sizeof :计算内存大小运算符。
a+++b:先计算a+b的值,再计算a++。
++a+b:先计算++a的值,再计算a+b。
双目运算符介绍
绿色,双目运算符,也有规律。
算术运算符 > 移位运算符 > 关系运算符 > 逻辑运算符
* :乘号。 / :除号。 % :取模(求余数)。
+ :加号。 - :减号。
C语言四则运算和数学四则运算略有不同。
两个数据类型一致的数做运算,结果的数据类型和操作数一致。
例:int / int = int,5 / 2 = 2。
两个数据类型不同的数做运算,结果的数据类型和高精度的一致。
例:float + int = float,5.3 + 2 = 7.3。
> :右移一位。
移位操作的是内存中的二进制数。
左移是低位补0,高位溢出。右移是高位补0或1,低位溢出。
对于无符号数,移位运算可以替换*/2。
对于有符号数,要具体验证操作系统对符号位的处理。
< :小于。 :大于。 >= :大于等于。
== : 等于。 != :不等于。
关系运算符形式有所不同,使用方法无不同。
& :按位且运算。01 & 11 = 01。
^ :按位异或运算符。01 ^ 11 = 10。
:按位或运算符。01 11 = 11。
&& :逻辑且运算符。
:逻辑或运算符。
注意,C语言的所有逻辑运算符的优先级都不同。
&&和,结合性是自左向右,当左侧结果就能确定整个结果时,右侧不计算。
例如:a != 0 && b / a。a=0,就能确定整个表达式为假,所以不用担心a做被除数不能为0。
三目运算符介绍
?: :条件运算符。return a>b?b:a;
先计算问号左侧,为真则返回:左侧b,为假则返回:右侧a。
好啦,这期运算符的课程就到这里,下周见~
关于柚子编程
致力于零基础入阶编程世界,一周一更
每周日中午12:00准时更新
喜欢记得来一个
领取专属 10元无门槛券
私享最新 技术干货