C语言运算符

运算符用于表达对数据的操作。

常见的有,算数运算符、关系运算符、逻辑运算符。

简单的,计算机可以处理:加减乘除、比较大小、且或非等操作。

然而,计算机并不总是处理简单的指令。

处理复杂指令的时候,就要遵循一定的“规则”,即优先级和结合性。

一起认识一下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准时更新

喜欢记得来一个

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180204G0C8E500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券