arduino笔记8:语言运算符 + c语言运算符优先级

 

运算符是告诉编译程序执行特定算术或逻辑操作的符号。C语言的运算范围很宽,把除了控制语句和输入/输出以外几乎所有的基本操作都作为运算符处理。

无论是加减乘除还是大于、小于,都需要用到运算符,C语言中的运算符和平时用的运算符基本上都差不多。运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运算符、关系运算符、自增自减运算符、条件运算符、逗号运算符等等。

大多数运算符都是二目运算符,即运算符位于两个表达式之间。

单目运算符的意思是运算符作用於单个表达式‘

目录

(一)赋值运算符

(二)算术运算符

(三)逻辑运算符

(四)关系运算符

(五)自增自减运算符

(六)复合赋值运算符

(七)条件运算符

(八)逗号运算符

(九)优先级和结合性


(一)赋值运算符

赋值语句的作用是把某个常量、变量、或表达式的值赋给另一个变量,符号为“=”。这里并不是等于的意思,只是赋值,等于用“==”表示。

赋值语句左边的变量在程序的其他地方必须要声明。

赋值语句中,变量在左边,值在右边。

赋值语句左边不允许存在表达式。

 

(二)算术运算符

在C语言中有两个单目和五个双目运算符。

单目:

  1. +正
  2. -负

双目:

  1. *乘法
  2. /除法
  3. %取模     :  用于计算两个整数相除所得的余数。
  4. +加法
  5. -减法

运算符有顺序问题,先算乘除再算加减,单目正和单目负最先运算。

强制类型转换

 

(三)逻辑运算符

逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。

符号功能:&&逻辑与,||逻辑或,!逻辑非。

 

需要注意的一点是,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。

这算是一个错误,相当于python中的短路求值的错误,应该避免。

 

 

 

(四)关系运算符

关系运算符是对两个表达式进行比较,各关系返回一个真/假值。

 

需要注意的是等于(==)和赋值(=)的区别。

 

(五)自增自减运算符

 

自增运算符(++)和自减运算符(--)对变量的操作结果是增加1和减少1。

 

 

 

 

(六)复合赋值运算符

复合赋值运算符实际上是一种缩写形式,使得对变量的改变更为简洁。比如

a = a + 3

a +=3

 

(七)条件运算符

 

条件运算符(:)是C语言中唯一的一个三目运算符看,它是对第一个表达式作真/假检测,然后根据结果返回另外两个表达式中的一个。

 

 

(八)逗号运算符

 

在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。

 

 

 

(九)优先级和结合性

 

优先级和结合性是运算符的两个重要的特性,结合性又称为计算顺序,它决定组成表达式的各个部分是否参与计算以及什么时候计算。

 

 

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

--

()

圆括号

(表达式)/函数名(形参表)

--

.

成员选择(对象)

对象.成员名

--

->

成员选择(指针)

对象指针->成员名

--

 

2

-

负号运算符

-表达式

右到左

单目运算符

~

按位取反运算符

~表达式

++

自增运算符

++变量名/变量名++

--

自减运算符

--变量名/变量名--

*

取值运算符

*指针变量

&

取地址运算符

&变量名

!

逻辑非运算符

!表达式

(类型)

强制类型转换

(数据类型)表达式

--

sizeof

长度运算符

sizeof(表达式)

--

 

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

%

余数(取模)

整型表达式%整型表达式

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

5

<< 

左移

变量<<表达式

左到右

双目运算符

>> 

右移

变量>>表达式

 

6

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

小于

表达式<表达式

<=

小于等于

表达式<=表达式

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

 

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

 

13

?:

条件运算符

表达式1?

表达式2: 表达式3

右到左

三目运算符

 

14

=

赋值运算符

变量=表达式

右到左

--

/=

除后赋值

变量/=表达式

--

*=

乘后赋值

变量*=表达式

--

%=

取模后赋值

变量%=表达式

--

+=

加后赋值

变量+=表达式

--

-=

减后赋值

变量-=表达式

--

<<=

左移后赋值

变量<<=表达式

--

>>=

右移后赋值

变量>>=表达式

--

&=

按位与后赋值

变量&=表达式

--

^=

按位异或后赋值

变量^=表达式

--

|=

按位或后赋值

变量|=表达式

--

 

15

逗号运算符

表达式,表达式,…

左到右

--

 

 

参考:

https://blog.csdn.net/huangblog/article/details/8271791

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章