MrThinco 发表于 2019-10-7 11:54:42

Python中的幂运算优先级问题

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

zltzlt 发表于 2019-10-7 11:58:31

本帖最后由 zltzlt 于 2019-10-7 19:38 编辑

幂运算是从右往左计算。

print(2 ** 2 ** 32) == print(2 ** (2 ** 32)) == print(2 ** 4294967296),这么大的数,电脑岂能不崩溃?

zltzlt 发表于 2019-10-7 16:27:12

如果你的提问得到满意的答案,请选择【最佳答案】。

MrThinco 发表于 2019-10-7 19:37:36

zltzlt 发表于 2019-10-7 11:58
幂运算是从左往右计算。

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

您好,请问一下。幂运算不是优先级最高吗?为什么不是先算的:2**2,再算(2**2)**32?谢谢

zltzlt 发表于 2019-10-7 19:38:47

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

不好意思,说错了,幂运算是从右往左计算。

zltzlt 发表于 2019-10-7 19:39:02

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

它的优先级和运算的顺序没有关系

MrThinco 发表于 2019-10-7 19:44:06

zltzlt 发表于 2019-10-7 19:38
不好意思,说错了,幂运算是从右往左计算。

嗯嗯,谢谢。这样我就理解了。记住了。感谢您
页: [1]
查看完整版本: Python中的幂运算优先级问题