讲解后缀表达式
来源:互联网 发布:友盟推送 php服务器端 编辑:程序博客网 时间:2024/06/18 18:25
前文:
当我们练习敲代码,以及写程序的时候,我们对于 printf("%d",3+4*5); 的结果从来都不会感到疑问。因为当这样的式子出现,我们会理所当然的想到先乘后加,所以得到我们的结果,但是计算机存放局部变量在栈中,栈的特性先进后出那么我们就知道+号是比*先进入,那么计算机为何在*号没进来时对3和4进行加法运算呢?下面我将讲解这个问题。
正文:
我们来看一道题:X=A+B*(C-D)/E 他在计算机中是如何放如何解答。
我们知道先进行运算的是C和D之间的减法,然后是(C-D)和B的乘法, B*(C-D)和E的除法,最后是A和B*(C-D)/E的加法。根据栈的特性加上前面所说。C,D,-,会在栈中连着存放。当栈放入运算符时,他们被取出运算后又会放入栈然后进行下一步,所以我们知道B和*在C,D,-连着存放(C,D,-是一个整体B,*不可插在其中间),那么依次类推 :E和/在B,*,C,D,-连着存放。。。。。。。后面同理。
然后用后缀表达式表示就是:XABCD-*/E+=
还有一种更快的方式来得到后缀表达式:计算机和人脑不一样的就是他记忆性很差,很笨,不知道运算的优先级,那么我们只需要人为的取消掉运算的优先级即可。取消优先级我们可以加括号。
最后式子就会变成 : ( X=(A+((B*(C-D) ) /E) ) ) 然后把每个括号中的运算符放到他们想应括号的右边
最后就是 ( X(A((B(CD) -)*E)/ )+ )= 然后去掉所有括号 就是XABCD-*E/+=
阅读全文
0 0
- 讲解后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 【后缀表达式】
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 后缀表达式
- 读写非文本文件--IO流
- BDF2-64位dorado without eclipse安装配置
- 解析选择排序法与冒泡排序法的区别(数组实现和指针实现)
- 磁盘管理
- 有意思的++count与count++
- 讲解后缀表达式
- 【HDU6150 2017中国大学生程序设计竞赛
- 学生信息系统优化(一)
- (一)Web框架-龙卷风Tornado之安装
- Ajax随笔,介绍ajax的优缺点和详细的工作原理
- 简单封装本地存储的方法
- effective C++ 条款十解读
- 【Data_Structure笔记1】线性表的顺序存储【顺序表】
- HDU