点击上方关注我们获取更多

运算符的优先级&结合性

当c语言出现表达式时,表达式的运算结果就会和运算符的优先级有关,优先级高的先运算。优先级相同时,根据运算符的结合性,左结合的运算符先算左边,右结合的运算符先算右边。

对于优先级:算术运算符、关系运算符、逻辑运算符、赋值运算符。逻辑运算符中“逻辑非”除外。

例如:

算术运算符(+、-、*、/)

对于表达式a+b*c,优先级和数字规则一样,先乘除后加减。

c语言中的加减乘除运算和数学中的运算规则基本相似,但有两点需要强调:

两个整数相除结果仍为整数,即只取商的整数部分,不取小数部分。

%是取两整数相除后余数的运算符。

注意:&只适用于整数运算

如:

运行结果

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

这是根据优先级的结合性来判定的。/和*的优先级相同,又都具有左结合性,所以向执行左边的除法,在执行右边的乘法。

自加自减运算符(++、--)

需要重点说明当然是,++在变量前面和后面是有区别的:

++在前面叫做前自增(例如++a)。前自增先进行自增运算,再进行其他操作;

++在后面叫做后自增(例如a++)。后自增先进行其他操作,在进行自增运算;

自减(--)也一样,有前自减和后自减之分。

例如:

运算结果

a,b,c,d的输出结果相信大家没有疑问,下面重点说a1,b1,c1,d1:

1)对于a1=++a,先执行++a,结果为11,在将11赋值给a1,所以a1的最终值为11.而a经过自增,最终的值也为11。

2)对于b1=b++。b的值并不会立马加1,而是先把b的原来值交给b1,然后再加1.b原来值为20,所以b1的值也就为20.而b经过自增,最终值为21。

自减(--)也是如此。

如:

我们来看一下:

1)执行语句①时,因为是后自减,先进行a-b运算,结果是11,然后b在自减,就变成了0;最后再将a-b的结果(也就是11)交给c,所以c的值是11.

2)执行语句②之前,b的值已经变成0,。对于d=(++a)-(--b),a会先自增,变成13,然后b再自减,变成-1,最后在计算13-(-1),结果是14,交给d,所以最终是14。

END

关注我们

品尝美食

编辑||朱娜荣

审核||杨文宁

c++自底向上算符优先分析_c语言运算符的优先级相关推荐

  1. c++自底向上算符优先分析_PHP程序员从入门到佛系第十弹:PHP 运算符

    PHP 运算符 本章节我们将讨论 PHP 中不同运算符的应用. 在 PHP 中,赋值运算符 = 用于给变量赋值. 在 PHP 中,算术运算符 + 用于把值加在一起. PHP 算术运算符 以下实例演示了 ...

  2. c++自底向上算符优先分析_词法分析程序的自动生成器(二)——Thompson算法

    碎碎念:我写词法分析程序的自动生成器的时候,先写的NFA-DFA和DFA化简.之后发现因为正则表达式的结构太复杂了,比如描述Pl/0程序标识符的正则表达式是 (a|-|z|A|-|Z)( a|-|z| ...

  3. 编译原理 | 语法分析(LL(1)分析法/算符优先分析法OPG)学习笔记及例子详解

    语法分析(自顶向下 / 自底向上) 自顶向下 递归下降分析法 这种带回溯的自顶向下的分析方法实际上是一种穷举的不断试探的过程,分析效率极低,在实际的编译程序中极少使用. LL(1)分析法 又称预测分析 ...

  4. 编译原理学习笔记·语法分析(LL(1)分析法/算符优先分析法OPG)及例子详解

    语法分析(自顶向下/自底向上) 自顶向下 递归下降分析法 这种带回溯的自顶向下的分析方法实际上是一种穷举的不断试探的过程,分析效率极低,在实际的编译程序中极少使用. LL(1)分析法 又称预测分析法, ...

  5. 编译原理(五)自底向上分析之算符优先分析法

    自底向上分析之算符优先分析法 说明:以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记. 基本过程 1. 一般方法:采用自左向右地扫描和分析输入串,从输入符号串开始,通过反复查找当前句型的句 ...

  6. 编译原理系列之五 自底向上优先分析(2)-算符优先分析法

    算符优先分析法 1.基本概念 算符文法(OG):文法G中没有形如A=>···BC···的产生式,其中B.C为非终结符,则G为算符文法(operator grammar). 也就是说产生式的右部不 ...

  7. 算符优先文法编写java语法分析器,编译原理课程设计实验报告——基于算符优先分析方法的表达式语法分析器...

    内容简介: 一.设计目的 了解用算符优先法对表达进行语法分析的方法,掌握自顶向下的预测语法分析程序的手工构造方法. 二.设计内容 对简单表达式文法构造算符优先分析器. 三.设计要求 1.对下列简单表达 ...

  8. 算符优先分析法代码 java_编译原理——算符优先分析文法(附源代码)

    1 源代码2 模块一:3 /****************#include"firstVT_lastVT.h"************************/ 4 5 //程序 ...

  9. 算符优先分析算法及其代码实现

    1. 什么是算符优先分析算法? 这是一种经典的自底向上分析法,简单直观,并被广泛使用.开始主要是对表达式的分析,现在已不限于此,可以用于一大类上下文无关文法. 称为算符优先分析是因为这种方法是仿效算术 ...

最新文章

  1. PHP 获取数组最后一个值
  2. wordpress wpdb-update 能获取更新的id嘛?_WordPress 投稿页上传图片,支持游客上传
  3. 使用proxy来调用未定义的属性方法
  4. 第九章构造数据类型实验
  5. JavaScript中赋值运算符的使用
  6. Java Servlet API中文说明文档
  7. mysql性能优化 硬件优化_mysql性能优化学习笔记(6)数据库配置优化硬件优化...
  8. Oracle dataGuard专题:Rman通过duplicate创建standby
  9. mysql默认dba_DBA 基本常识 - 安装完 MySQL 后必须调整的 10 项配置 - iTeknical
  10. 可道云、NextCloud和Seafile使用体验比较哪个好用
  11. android 点阵字库
  12. IM的扫码登录功能如何实现?
  13. google之Thumbnails图片等比压缩,保持图片清晰
  14. iOS视频开发(二):视频H264硬编码
  15. Excel怎样恢复科学计数法显示的数据
  16. Yii Criteria
  17. win10系统无法正常自动启动服务
  18. LNMP部署应用——架设Discuz论坛——实验过程超详细!快来跟做!
  19. 喜报 | 荣获中国产学研合作促进奖
  20. 利用计算机技术网络技术,计算机技术和网络技术在机房管理中的应用研究

热门文章

  1. c++吃豆人代码_山药豆的功效与作用营养功效
  2. 【STM32】利用 C 语言 strchar() 函数查找字符串中指定字符的位置
  3. PyTorch cat() 函数实现维度拼接
  4. 1.2 正交化-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  5. 7.2 PCA-机器学习笔记-斯坦福吴恩达教授
  6. Vim的使用技巧-自动闭合成对符号
  7. Android中对Log日志文件的分析
  8. 如何开发一个能拯救银河系的充电器
  9. 基于MATLAB的RSSI 和 PLE 定位算法,并通过卡尔曼滤波器减少非视距误差
  10. 基于FPGA的BP神经网络