前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言运算符优先级

C语言运算符优先级

作者头像
用户6755376
发布2020-02-12 11:55:09
2K0
发布2020-02-12 11:55:09
举报

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

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

常见的这些大家应该记得。那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。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算机二级C语言 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档