资讯专栏INFORMATION COLUMN

C语言运算符的优先级和结合性详细解说

aristark / 2154人阅读

摘要:结合性当一个运算对象两侧的运算符优先级别相同时,则按运算符的结合性来确定表达式的运算顺序。大多数运算符结合方向是左结合性,只有三类运算符的结合方向是右结合性,即单目运算符条件运算符赋值运算符。

C语言运算符的优先级和结合性详细解说

优先级

运算符

含义

使用形式

结合性

操作数

1

[ ]

数组下标

数组名[整型表达式]

左结合性

( )

圆括号

(表达式)

.

成员选择(对象

对象.成员名

->

成员选择(指针)

对象指针->成员名

++

后缀自增运算符

变量名++

单目运算符

--

后缀自减运算符

变量名--

单目运算符

2

-

负号运算符

-表达式

右结合性

单目运算符

(类型)

强制类型转换

(数据类型)表达式

单目运算符

++

前缀自增运算符

++变量名

单目运算符

--

前缀自减运算符

--变量名

单目运算符

*

取值运算符

*指针表达式

单目运算符

&

取地址运算符

&左值表达式

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof 表达式 或 sizeof(类型)

单目运算符

3

/

表达式/表达式

左结合性

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式%整型表达式

双目运算符

4

+

表达式+表达式

左结合性

双目运算符

-

表达式-表达式

双目运算符

5

<<

左移

表达式<<表达式

左结合性

双目运算符

>>

右移

表达式>>表达式

双目运算符

6

>

大于

表达式>表达式

左结合性

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左结合性

双目运算符

!=

不等于

表达式!=表达式

双目运算符

8

&

按位与

整型表达式&整型表达式

左结合性

双目运算符

9

^

按位异或

整型表达式^整型表达式

左结合性

双目运算符

10

|

按位或

整型表达式|整型表达式

左结合性

双目运算符

11

&&

逻辑与

表达式&&表达式

左结合性

双目运算符

12

||

逻辑或

表达式||表达式

左结合性

双目运算符

13

?:

条件运算符

表达式1?表达式2:表达式3

右结合性

三目运算符

14

=

赋值运算符

变量 = 表达式

右结合性

双目运算符

/=

除后赋值

变量 /=表达式

双目运算符

*=

乘后赋值

变量 *=表达式

双目运算符

%=

取模后赋值

变量%=表达式

双目运算符

+=

加后赋值

变量+=表达式

双目运算符

-=

减后赋值

变量-=表达式

双目运算符

<<=

左移后赋值

变量<<=表达式

双目运算符

>>=

右移后赋值

变量>>=表达式

双目运算符

&=

按位与后赋值

变量&=表达式

双目运算符

^=

按位异或后赋值

变量^=表达式

双目运算符

|=

按位或后赋值

变量|=表达式

双目运算符

15

,

逗号运算符

表达式,表达式,表达式,...

左结合性

运算符

在一个表达式中可能包含多个有不同运算符连接起来的或具有不同数据类型的数据对象,表达式有多种运算,不同的结合顺序可能得出不同结果或者出现运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性和唯一性。

每种同类型的运算符都有内部的运算符优先级,不同类型的运算符之间也有相应的优先级顺序。一个表达式中既可以包括相同类型的运算符,也可以包括不同类型的运算符或者函数。当多种运算符出现在同一个表达式中时,应该先按照不同类型运算符间的优先级进行运算。可以用括号改变优先级顺序,使得括号内的运算优先于括号外的运算。对于多重括号,总是由内到外强制表达式的某些部分优先运行。括号内的运算总是最优先计算。

优先级

优先级与求值顺序无关。优先级高低从上到下依次递减,表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。

结合性

当一个运算对象两侧的运算符优先级别相同时,则按运算符的结合性来确定表达式的运算顺序。大多数运算符结合方向是左结合性,只有三类运算符的结合方向是右结合性,即:单目运算符、条件运算符、赋值运算符。结合性是针对两个相邻的优先级相同的运算符而言,而不是表达中的运算对象,运算符是决定左右的基准点,先以前面的运算符构造运算,就是左结合性,反之,就是右结合性 。

操作数

运算符是一种特殊的函数,它们具有一个或多个操作数并返回相应的值。运算符可以是一目、二目或三目的,有多少目就代表有多少个操作数。只有一个运算符的操作数是三目运算符,即:条件运算符。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122334.html

相关文章

  • 再识C语言(五)

    摘要:注不要移动负数位标准未定义行为这种行为属于标准未定义行为语言中并没有规定移动负数位。按进制位与规则两个二进制数,有则为,全则为。为假的时候,打印语言中表示假,非表示真无论是正数还是负数。 C语言操作符详解 目录 一、算术操作符 二、移位操作符 三、位操作符 四、赋值操作符 五、单目操作符 六...

    BigTomato 评论0 收藏0
  • 这些c语言操作符你确定你掌握了?如果不保准就来看看这篇文章吧

    摘要:毋庸置疑,运算符号操作符就是进行语言的一些运算的,这些运算符虽然你在学语言的时候很不起眼,而在有些题目上还不让用这些操作符来做题,但是,当你用到他们的时候,他们会给你意想不到的帮助。 目录 操作符详解 什么是操作符呢? 操作符的分类 操作符的优先级  1、优先级1级 2、优先级2级 3、...

    Carson 评论0 收藏0
  • C语言基础之操作符详解

    摘要:语言基础之操作符详解操作符的分类算术操作符移位操作符位操作符逻辑操作符逗号表达式表达式求值隐式类型转换算术转换操作符的属性今天就带各位大佬来了解一波语言的操作符。 ...

    snowell 评论0 收藏0
  • 《JavaScript程序设计》—— 第二章 编程

    摘要:变量名必须以字母美元符号下划线开始,只能包含字母数字下划线和美元符号。你有元现在是第年小练习计算从和增长到自身的倍需要的次数。 2.3 程序的构成 表达式,用于计算并得到值; 变量,用于保存数据,以便将来使用; 语句,用于执行脚本的操作; 2.3.1 表达式 2 2+8.1+5 (2+8.1)* 5 9>4 9>4 && 1===2 dog+house Hello.length ...

    sean 评论0 收藏0
  • C语言操作符多图详解】——“讲述你所未知操作符细节”

    摘要:今天小玄为大家带来语言的操作符相关的讲解,希望大家能通过这篇文章对相关操作符有更加深入的理解。操作符的两个操作数必须为整数。操作符的优先级操作符的结合性是否控制求值顺序。两个相邻的操作符先执行哪个取决于他们的优先级。         今天小玄为大家带来C语言的操作符相关的讲解,希望大家能通过...

    iliyaku 评论0 收藏0

发表评论

0条评论

aristark

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<