鱼C论坛

 找回密码
 立即注册
查看: 1341|回复: 3

证明运算符优先级高会影响结合性,但不会像数学上那样,先进行计算。例如:a + b...

[复制链接]
发表于 2018-5-8 19:16:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 PYTHON20 于 2018-5-9 12:34 编辑

正常数学计算是先计算b*c ,然后计算a+(b*c),但是计算机是先从a开始计算 然后是 a+(b*c),想通过函数来证明这一点
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-5-9 09:37:37 | 显示全部楼层
想表达 什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-9 12:34:07 | 显示全部楼层

正常数学计算是先计算b*c ,然后计算a+(b*c),但是计算机是先从a开始计算 然后是 a+(b*c),想通过函数来证明这一点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-9 16:42:56 | 显示全部楼层
首先,基本的运算优先级是不变的(括号> 乘除> 加减)。至于顺序,<b>这不重要</b>。不同的人有的不同的顺序。

def fake(*args):
        sn = []        # 数字栈
        on = []        # 操作符栈
        for item in args:
                if isinstance(item, int) or isinstance(item, float):
                        if len(on) == 0 or on[-1] == '+' or on[-1] == '-':
                                sn.append(item)
                        else:
                                sn.append(item)
                                if isinstance(sn[-2], int) or isinstance(sn[-2], float):
                                        # 判断符号,对最后两个数进行运算,并将结果append到sn中
                                else:
                                        # 继续遍历
                else:
                        if item == '(':
                                sn.append(item)       
                        elif item == ')'"
                                # 递归对括号里面的元素进行计算(左边下标代替做括号位置)
                        else:
                                on.append(item)
# 最后只剩下加减运算,从左向右遍历一次计算。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-30 02:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表