C语言运算符优先级和结合性一览表

所谓优先级就是当一个表达式中有多个运算符时,先计算谁,后计算谁。事实上在编程的时候也不需要考虑优先级的问题。因为如果不知道优先级高低的话,加一个括号就可以了,因为括号( )的优先级是最高的。比如程序中:

k = (j>i) && (8==i);

根据运算符的优先级,这条语句完全可以写成:

k = j>i && 8==i;

但是第一种写法别人一看就知道先计算谁后计算谁。而且加圆括号也是一种编程规范,因为程序不只是写给自己看。 此外运算符还有“目”和“结合性”的概念,这个很简单。“目”就是“眼睛”的意思,一个运算符需要几个数就叫“几目”。C语言中大多数的运算符都是双目的,也有单目和三目的。单目运算符比如逻辑非,如!1,它就只有一只眼睛,所以是单目的。整个C语言中只有一个三目运算符,即条件运算符? :。

优先级都是关于优先级不同的运算符参与运算时先计算谁后计算谁。但是如果运算符的优先级相同,那么先计算谁后计算谁呢?这个就是由“结合性”决定的。比如1+2×3÷4,乘和除的优先级相同,但是计算的时候是从左往右,即先计算乘再计算除,所以乘和除的结合性就是从左往右。 C语言中大多数运算符的结合性都是从左往右,只有三个运算符是从右往左的。一个是单目运算符,另一个是三目运算符,还有一个就是双目运算符中的赋值运算符=。双目运算符中只有赋值运算符的结合性是从右往左的,其他的都是从左往右。运算符的“结合性”也不要死记,在不断使用中就记住了。

运算符优先级和结合性一览表

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

?

()

圆括号

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

?

.

成员选择(对象)

对象.成员名

?

->

成员选择(指针)

对象指针->成员名

?

2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式

?

++

自增运算符

++变量名变量名++

单目运算符

--

自减运算符

--变量名变量名--

单目运算符

*

取值运算符

*指针变量

单目运算符

&

取地址运算符

&变量名

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof(表达式)

?

3

/

表达式 / 表达式

左到右

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式%整型表达式

双目运算符

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<<

左移

变量<

左到右

双目运算符

>>

右移

变量>>表达式

双目运算符

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

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

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

?

/=

除后赋值

变量/=表达式

?

*=

乘后赋值

变量*=表达式

?

%=

取模后赋值

变量%=表达式

?

+=

加后赋值

变量+=表达式

?

-=

减后赋值

变量-=表达式

?

<<=

左移后赋值

变量<<=表达式

?

>>=

右移后赋值

变量>>=表达式

?

&=

按位与后赋值

变量&=表达式

?

^=

按位异或后赋值

变量^=表达式

?

|=

按位或后赋值

变量|=表达式

?

15

,

逗号运算符

表达式,表达式,…

左到右

?

上表中可以总结出如下规律:

结合方向只有三个是从右往左,其余都是从左往右。

所有双目运算符中只有赋值运算符的结合方向是从右往左。

另外两个从右往左结合的运算符也很好记,因为它们很特殊:一个是单目运算符,一个是三目运算符。

C语言中有且只有一个三目运算符。

逗号运算符的优先级最低,要记住。

此外要记住,对于优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符。逻辑运算符中“逻辑非 !”除外。

一些容易出错的优先级问题

上表中,优先级同为1 的几种运算符如果同时出现,那怎么确定表达式的优先级呢?这是很多初学者迷糊的地方。下表就整理了这些容易出错的情况:

C语言运算符的优先级和结合性方面的试题,C语言运算符优先级与结合性一览表.docx...相关推荐

  1. c语言中短路逻辑有与有或例子,C语言零基础教程之运算符和表达式,全面解析,轻松上手...

    运算符和表达式 运算符:运算符用于执行程序代码运算,会针对一个以上操作数来进行运算.例如:2+3,其操作数是2和3,而运算符则是"+" 操作数:是运算符作用于的实体,操作数指出指令 ...

  2. c语言移动通信功率计算,《移动通信软件编程基础—C语言》第3章_运算符.ppt

    <移动通信软件编程基础-C语言>第3章_运算符.ppt 移动通信软件编程基础 C语言,知识回顾3,运算符,第,章,本章目标理解表达式,掌握赋值运算符和赋值表达式,掌握关系运算符和关系表达式 ...

  3. C语言程序入门之基本数据类型、常量与变量、运算符

    目录 一.基本数据类型 1.整型 2.浮点型 3.字符型 二.常量与变量 1.常量 2.变量 三.运算符 1.算术运算符 2.关系运算符 3.  逻辑运算符 4.位运算符 5.自增自减运算符 6.赋值 ...

  4. c语言中除法除以1000与1e3,北京航空航天大学C语言b第二讲(第三、四章)数据类型、运算符与表达式和最简单的C程序设计.ppt...

    <北京航空航天大学C语言b第二讲(第三.四章)数据类型.运算符与表达式和最简单的C程序设计.ppt>由会员分享,可在线阅读,更多相关<北京航空航天大学C语言b第二讲(第三.四章)数据 ...

  5. 成信大2020C语言编程114,南京信息工程大学2020考研大纲822CC语言程序设计

    <南京信息工程大学2020考研大纲822CC语言程序设计>由会员分享,可在线阅读,更多相关<南京信息工程大学2020考研大纲822CC语言程序设计(8页珍藏版)>请在人人文库网 ...

  6. 轻松学c语言编程.pdf等,轻松学编程 轻松学C语言编程pdf

    轻松学编程 轻松学C语言编程 内容简介 <轻松学编程:轻松学C语言编程>从初学者的角度出发,以通俗易懂的语言.丰富多彩的实例,详细介绍了使用C语言进行程序开发应该掌握的各方面知识.全书共1 ...

  7. 全国二级c语言考试题型,2016年电大 -全国计算机二级c语言考试题型及考试重点.doc...

    2016年电大 -全国计算机二级c语言考试题型及考试重点 全国计算机二级C语言资格考试 考试方式全国计算机二级C语言.笔试:90分钟,满分100分,其中含公共基础知识部分的30分.???? 2.上机: ...

  8. c语言未初始化的指针下标访问是0,C语言的二数组的指针访问.doc

    C语言的二数组的指针访问 二维数组的指针访问 --王炳华 指向二维数组的指针及用指针访问二维数组,是学习指针的最大难点.如果真正弄懂了这个问题,就可以说你学会了使用指针. 二维数组的指针 指针就是地址 ...

  9. C语言有四种基本常量,第2章-C语言的基础知识.ppt

    第2章-C语言的基础知识.ppt 第二章 编制C程序的基础知识,本章重点内容 2.1 常量与变量 2.2 C语言的基本数据类型 2.3 C语言的常用运算符和表达式,运行程序,第二章 编制C程序的基础知 ...

最新文章

  1. Arduino IDE增加ATmega32开发选项遇到的问题
  2. 使用Hibernate在CQRS读取模型中进行快速开发
  3. web策略类游戏开发(四)一个可以承载万人在线的架构
  4. 【BZOJ1040】【codevs1423】骑士,第一次的基环外向树DP
  5. 设计师不用下课了吧?小米突然官宣性价比之王旗舰:升降式摄像头
  6. [转载] python中随机数生成函数_python中seed随机函数如何生成随机数?
  7. leetcode/力扣 回溯算法大总结,BAT程序员完整学习手册开放下载!!
  8. C语言中与字符串有关函数讨论以及安全性能问题
  9. c语言中函数的知识点总结,c语言函数知识点总结
  10. 如何编写优秀的单元测试用例
  11. python判断素数(质数):for-else循环的理解与示例应用
  12. 职场必备的30套报表模板,满足95%的报表需求,一键套用无需代码
  13. 苹果怎么在电脑上备份?3种备份方式选择
  14. 波波腾机器人_加入 Beta 版“机器人bobo” - TestFlight - Apple
  15. WPF 逻辑树和可视化树
  16. iOS生成gif图片
  17. 想搭建一个专属于你的网站吗??新手向超详细攻略
  18. java.acp是什么,ACP是什么?看这一篇就够啦
  19. 深度解析Linux通过日志反查入侵
  20. VSCode快捷键配置复制一行

热门文章

  1. SystemTap Beginner
  2. 股票基础知识—K线图基础知识
  3. 图形学实验:简单几何体的平移,缩放,旋转等几何变换,进行图形化交互
  4. 碳通宝丨绿色经济将成为应对经济衰退的利剑
  5. 如何修改静态IP地址
  6. 一个SLR,LR,LALR语法分析器
  7. linux tkinter安装,Python的Tkinter库的安装--Debian
  8. java文档注释报错,java文档注释主要使用方法
  9. 大数据与银行风险管理革命
  10. 程序员为啥365天都背电脑包?看完答案后笑出声