专栏首页计算机二级C语言C语言运算符优先级

C语言运算符优先级

我们先来回忆一下你能想起来的优先级顺序。

首先,() 加括号的优先级最高;然后取非,乘、除、取余,加、减;。。。。

常见的这些大家应该记得。那C语言里面总共有多少运算符呢,优先级顺序又是怎样的呢?

如上图所示,C语言里面一共分为15个优先级。简单记就是:!> 算术运算符 > 关系运算符 > && > || > 赋值运算符。

需要注意的一些问题:

1、优先级与求值顺序无关。C语言里面每个操作符都有优先级,用于确定它和表达式中其余操作符之间的关系,但仅凭优先级还不能确定求值的顺序。遵循的规则是:两个相邻的操作符的执行顺序由它们的优先级决定。如果它们的优先级相同,它们的执行顺序由它们的结合性决定。除此之外,编译器可以自由决定使用任何顺序对表达式进行求值,只要它不违背逗号、&&、||和?:操作符所施加的限制。

举个简单的例子,对于表达式a*b+c*d+e*f,按照优先级顺序所有的三个乘法先进行,然后才是加法,但实际上是怎样的呢?

a*b

c*d

(a*b)+(c*d)

e*f

(a*b)+(c*d)+(e*f)

另外还有一个非常重要的短路求值问题,我们在下一篇文章里专门讲解。

2、sizeof()长度运算符经常被误认为是一个函数。还有一个大家经常用,但其实不太清楚的优先级最低的逗号运算符。

3、相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。

4、C语言里面唯一的一个三目运算符:条件运算符 ?:

很多同学经常会把数学上表达式的概念误用到C语言代码里面。比如a>b>c,在数学上表示三者之间的大小关系,但是C语言里面只有关系运算符>。首先是判断a>b成立与否,运算结果若为真值是1,不成立为假值是0。也就是最后和c进行比较的是0或者1。

本文分享自微信公众号 - 计算机二级C语言(gh_044a0595bf44),作者:计算机二级C语言

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 条件运算符题目讲解

    【单选题】设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的值是( )。

    用户6755376
  • C语言位运算符

    对于更多紧凑的数据,C 程序可以用独立的位或多个组合在一起的位来存储信息。文件访问许可就是一个常见的应用案例。位运算符允许对一个字节或更大的数据单位中独立的位做...

    用户6755376
  • 全国计算机二级C语言考试知识点及2009样题

    用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“....

    用户6755376
  • 用上这门黑科技,运维从此不背锅!

    近年来,企业业务规模的急剧上升,导致运维场景的复杂性也呈指数性上升,原本依靠人工经验的运维工作难度也变得更具有挑战性,而基于机器学习的智能运维(AIOps)开始...

    iMike
  • “互联网+”时代下的银行信息安全

    全文略读:人工智能、深度挖掘技术对历史、现状数据的综合分析,包括精确分类、主动识别以及趋势预测技术,将对普惠金融的实现甚至银行业态产生革命性影响。银行业态将由...

    灯塔大数据
  • 「干货」什么是用户运营?想要做好运营,需要从五个方面着手

    运营这个概念非常宽泛,互联网公司有很多的岗位都跟运营有关系。用户运营核心的工作在于拉新、留存、活跃三个方向。在大部分情况下,运营包括渠道、内容、社群、自媒体、活...

    光荣与梦想1987
  • 对于opencv全面貌的认识和理解

    1、opencv其实最开始只有源码,也就是sources中的代码,sources中有个modules,进入里面是各个我们平常使用的模块,如下图。

    chenjx85
  • 美摄音视频SDK:独家提供VR全景视频编辑功能,支持“抖音”等特效

    如今的移动视频行业,在BAT与今日头条等互联网巨头的重金刺激下,新一轮的增长迎来了该领域的“黄金时代”。与此同时,巨头的分割,也让身处该行业的百余位玩家深陷混战...

    BestSDK
  • 前端基础知识:Web开发的26项基本概念和技术总结

    Web开发是比较费神的,需要掌握很多很多的东西,特别是从事前端开发的朋友,需要通十行才行。今天,本文向初学者介绍一些Web开发中的基本概念和用到的技术,从A到Z...

    用户5827212
  • 你知道吗?Web的26项基本概念和技术

    Web 开发是比较费神的,需要掌握很多很多的东西,特别是从事前端开发的朋友,需要通十行才行。今天,本文向初学者介绍一些 Web 开发中的基本概念和用到的技术,从...

    用户4962466

扫码关注云+社区

领取腾讯云代金券