Python中的幂运算优先级问题
小甲鱼有道Python的题目:print(2 ** 2 ** 32),这个确实我测试了一下,把我计算机都算崩溃了。但是,我想的是,幂运算的优先级是最高的。那么这个表达式,应该是:print((2 ** 2) ** 32),相当于先求2 的2次方,然后得到4,然后再求4的32次方。可是实际上,不是这样的。
求大神给我解释一下,为什么会出现这样的问题?是什么原理?
优先级不是应该,从高到底,然后从表达式左边到右边,从圆括号内部到外部这样的计算顺序吗?
谢谢,大家的帮助。请分析一下。 本帖最后由 zltzlt 于 2019-10-7 19:38 编辑
幂运算是从右往左计算。
print(2 ** 2 ** 32) == print(2 ** (2 ** 32)) == print(2 ** 4294967296),这么大的数,电脑岂能不崩溃? 如果你的提问得到满意的答案,请选择【最佳答案】。 zltzlt 发表于 2019-10-7 11:58
幂运算是从左往右计算。
print(2 ** 2 ** 32) == print(2 ** (2 ** 32)) == print(2 ** 4294967296),这 ...
您好,请问一下。幂运算不是优先级最高吗?为什么不是先算的:2**2,再算(2**2)**32?谢谢 MrThinco 发表于 2019-10-7 19:37
您好,请问一下。幂运算不是优先级最高吗?为什么不是先算的:2**2,再算(2**2)**32?谢谢
不好意思,说错了,幂运算是从右往左计算。 MrThinco 发表于 2019-10-7 19:37
您好,请问一下。幂运算不是优先级最高吗?为什么不是先算的:2**2,再算(2**2)**32?谢谢
它的优先级和运算的顺序没有关系 zltzlt 发表于 2019-10-7 19:38
不好意思,说错了,幂运算是从右往左计算。
嗯嗯,谢谢。这样我就理解了。记住了。感谢您
页:
[1]