本篇文章我们从一个例子入手讲解,请看下面的代码:

#include
int main(){
int a = 16, b = 4, c = 2;
int d = a   b * c;
int e = a / b * c;
printf( "d=%d, e=%d\n", d, e);
return 0;
}

运行结果:
d=24, e=8

1) 对于表达式a b * c,如果按照数学规则推导,应该先计算乘法,再计算加法;b * c的结果为 8,a 8的结果为 24,所以 d 最终的值也是 24。

从运行结果可以看出,我们的推论得到了证实,C语言也是先计算乘法再计算加法,和数学中的规则一样。

先计算乘法后计算加法,说明乘法运算符的优先级比加法运算符的优先级高。所谓优先级,就是当多个运算符出现在同一个表达式中时,先执行哪个运算符。

C语言有几十种运算符,被分成十几个级别,有的运算符优先级不同,有的运算符优先级相同。

一下子记住所有运算符的优先级并不容易,还好C语言中大部分运算符的优先级和数学中是一样的,大家在以后的编程过程中也会逐渐熟悉起来。如果实在搞不清,可以加括号,就像下面这样:

int d = a   (b * c);

括号的优先级是最高的,括号中的表达式会优先执行,这样各个运算符的执行顺序就一目了然了。

2) 对于表达式a / b * c,除法和乘法的优先级是相同的,这个时候到底该先执行哪一个呢?

按照数学规则应该从左到右,先计算除法,在计算乘法;a / b的结果是 4,4 * c的结果是 8,所以 e 最终的值也是 8。这个推论也从运行结果中得到了证实,C语言的规则和数学的规则是一样的。

当乘法和除法的优先级相同时,编译器很明显知道先执行除法,再执行乘法,这是根据运算符的结合性来判定的。

所谓结合性,就是当一个表达式中出现多个优先级相同的运算符时,先执行哪个运算符:先执行左边的叫左结合性,先执行右边的叫右结合性。

/*的优先级相同,又都具有左结合性,所以先执行左边的除法,再执行右边的乘法。

3) 像 、-、*、/ 这样的运算符,它的两边都有要计算的数据,每份这样的数据都称作一个操作数,一个运算符需要 n 个操作数就称为 n 目运算符。例如:

  • 、-、*、/、= 是双目运算符;

  • 、-- 是单目运算符;

  • ? : 是三目运算符(这是C语言里唯一的一个三目元算符,后续我们将会讲解)。

总结

当一个表达式中出现多个运算符时,C语言会先比较各个运算符的优先级,按照优先级从高到低的顺序依次执行;

当遇到优先级相同的运算符时,再根据结合性决定先执行哪个运算符:如果是左结合性就先执行左边的运算符,如果是右结合性就先执行右边的运算符。

C语言的运算符众多,每个运算符都具有优先级和结合性,还拥有若干个操作数。对于没有学到的运算符,大家不必深究,一带而过即可,等学到时再来回顾。

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

巧解C语言运算符的优先级和结合性相关推荐

  1. 说说C语言运算符的“优先级”与“结合性”

    本文链接:https://blog.csdn.net/steedhorse/article/details/5903974 论坛和博客上常常看到关于C语言中运算符的迷惑,甚至是错误的解读.这样的迷惑或 ...

  2. [c语言]运算符的优先级与结合性

    c语言中运算符的优先级和结合性常常被人混淆一谈,本文目的在于简单谈谈两者的区别.本文举几个简单的例子说明,这些运算符也特别常用. 首先要明白的是:优先级决定表达式中各种不同的运算符起作用的优先次序:而 ...

  3. C语言运算符的优先级及结合性

    C语言运算符的优先级我们结合实例了解会更加简单易懂. 示例程序 #include <stdio.h> int main(){int a = 16, b = 4, c = 2;int d = ...

  4. C语言 运算符的优先级和结合性是怎样的?

    1.问题阐述 各种运算符的优先级是怎样的?结合顺序又是怎样的? 2.专家解答 C语言中的运算符种类丰富,有40多种,分为15种优先级,而且还具有结合性的特点.在表达式中,各运算对象参与运算的先后顺序不 ...

  5. C语言运算符的优先级和结合性

    刚学习C语言的同学看到优先级和结合性往往是一脸懵懂. 其实,所谓优先级,就是表达式中有不同的运算符,我们该就先计算哪一个?例如,a+b*c,先计算乘法,再计算加法. 所谓结合性,就是表达式中的相同类型 ...

  6. C语言 运算符的优先级与结合性

    说明 根据运算符所带的操作数的数量进行划分,C语言的运算符有三种类别: 单目运算符:只带一个操作数的运算符.如:++运算符. 双目运算符:带两个操作数的运算符.如:+.-.*./.%运算符. 三目运算 ...

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

    C语言运算符优先级和结合性一览表 所谓优先级就是当一个表达式中有多个运算符时,先计算谁,后计算谁.事实上在编程的时候也不需要考虑优先级的问题.因为如果不知道优先级高低的话,加一个括号就可以了,因为括号 ...

  8. C语言运算符的优先级和结合

    今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () ...

  9. c语言左值中有运算符,C语言左值,运算符的优先级以及结合性探讨

    刚刚开始看一本书.<C陷阱与缺陷>,相信学习C语言的大家都对这本书有耳闻.今天看到了里面的贪心法则.也即在读到一个字符后,尽可能多的读入更多的字符,直到读入的字符组成的字符串已经不可能再组 ...

最新文章

  1. LoRDEC: a tool for correcting errors in long sequencing reads 纠正长序列读取错误的工具
  2. [unity3d]水果忍者-界面搭建
  3. CheckBox的使用(四):ListView中的项设置为可以多选
  4. Python中的argparse模块
  5. CodeSmith 破解和注册
  6. 【必备知识点】JavaScript里面那些天天使用的API
  7. 给vs2010安装上cocos2d-x的模版
  8. 唐山师范学院计算机考试,[河北]唐山师范学院2017年3月计算机一级考试报名时间...
  9. springboot-项目获取resources下文件的方法
  10. 没想到,我都来阿里5年了!
  11. Magento搬家、换域名、重新安装教程
  12. Doxygen学习小记
  13. c++ 设置类型别名
  14. Elasticsearch合并高亮字段
  15. windows10更新后网络无法连接的问题
  16. 5.TCP/IP 详解卷1 ---RARP:逆地址解析协议
  17. idea本地运行JavaWeb项目
  18. matlab程序 surf算法,SURF算法代码 matlab
  19. 实验三|Python 企业营运能力分析
  20. 餐厅点菜c语言程序代码,餐馆点菜系统C语言源代码.pdf

热门文章

  1. java hadoop_单元测试Java Hadoop作业
  2. Elasticsearch –使用模式替换过滤器和自定义分析器忽略查询中的特殊字符
  3. JRebel适用于Gradle Spring Boot应用程序
  4. @async方法不调用了_在Spring中使用Future对象调用Async方法调用
  5. Mockito教程:使用Mockito进行测试和模拟
  6. resteasy_Tomcat 7上具有RESTeasy JAX-RS的RESTful Web服务– Eclipse和Maven项目
  7. ChronicleMap –具有堆外内存的Java体系结构
  8. Java 8陷阱–提防Files.lines()
  9. 向SAML响应中添加自定义声明–(如何为WSO2 Identity Server编写自定义声明处理程序)...
  10. 如何实现REST资源的输入验证