鱼C论坛

 找回密码
 立即注册
查看: 3057|回复: 6

[已解决]Python中的幂运算优先级问题

[复制链接]
发表于 2019-10-7 11:54:42 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼有道Python的题目:
print(2 ** 2 ** 32),这个确实我测试了一下,把我计算机都算崩溃了。但是,我想的是,幂运算的优先级是最高的。那么这个表达式,应该是:print((2 ** 2) ** 32),相当于先求2 的2次方,然后得到4,然后再求4的32次方。可是实际上,不是这样的。
求大神给我解释一下,为什么会出现这样的问题?是什么原理?
优先级不是应该,从高到底,然后从表达式左边到右边,从圆括号内部到外部这样的计算顺序吗?
谢谢,大家的帮助。请分析一下。
最佳答案
2019-10-7 11:58:31
本帖最后由 zltzlt 于 2019-10-7 19:38 编辑

幂运算是从右往左计算。

print(2 ** 2 ** 32) == print(2 ** (2 ** 32)) == print(2 ** 4294967296),这么大的数,电脑岂能不崩溃?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-7 11:58:31 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zltzlt 于 2019-10-7 19:38 编辑

幂运算是从右往左计算。

print(2 ** 2 ** 32) == print(2 ** (2 ** 32)) == print(2 ** 4294967296),这么大的数,电脑岂能不崩溃?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-7 16:27:12 | 显示全部楼层
如果你的提问得到满意的答案,请选择【最佳答案】。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-7 19:37:36 From FishC Mobile | 显示全部楼层
zltzlt 发表于 2019-10-7 11:58
幂运算是从左往右计算。

print(2 ** 2 ** 32) == print(2 ** (2 ** 32)) == print(2 ** 4294967296),这 ...

您好,请问一下。幂运算不是优先级最高吗?为什么不是先算的:2**2,再算(2**2)**32?谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-7 19:38:47 | 显示全部楼层
MrThinco 发表于 2019-10-7 19:37
您好,请问一下。幂运算不是优先级最高吗?为什么不是先算的:2**2,再算(2**2)**32?谢谢

不好意思,说错了,幂运算是从右往左计算。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-7 19:39:02 | 显示全部楼层
MrThinco 发表于 2019-10-7 19:37
您好,请问一下。幂运算不是优先级最高吗?为什么不是先算的:2**2,再算(2**2)**32?谢谢

它的优先级和运算的顺序没有关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-7 19:44:06 From FishC Mobile | 显示全部楼层
zltzlt 发表于 2019-10-7 19:38
不好意思,说错了,幂运算是从右往左计算。

嗯嗯,谢谢。这样我就理解了。记住了。感谢您
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 10:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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