天云TY 发表于 2019-10-17 13:29:53

为什么python print((2**2)**32)可以输出,print(2**2**32)不能啊

python print((2**2)**32)
可以正常输出,
那为何
python print(2**2**32)
无法执行?

冬雪雪冬 发表于 2019-10-17 13:36:43

等式1为2**64
等式2为2**4294967296,数据太大了,内存占用和CPU运算能力都不匹配。

前进一步 发表于 2019-10-17 19:36:29

先说结论:两个,都可以运行的,都正确。
再说原因:为啥第二个没有反应?那是因为第二个数据太大了,内存占用和CPU运算能力都不匹配,所以一直在运算,没有吧结果呈现出来。如果你关闭idle,就会给你提示:
your program is still runing,do you want to kill it?   看到没,你的程序还在运行,就是说,还在计算,只是没有算出来结果而已。

zltzlt 发表于 2019-10-17 19:49:38

由于幂运算是从右往左运算的,所以 print(2 ** 2 ** 32) 就相当于 print(2 ** 4294967296),数字太大了,Python 一时算不出结果。

而 print((2 ** 2) ** 32) 加了括号,相当于 print(4 ** 32),Python 当然可以很快算出是 18446744073709551616。

独酌dz 发表于 2022-11-5 18:01:44

幂运算是从右往左运算的
页: [1]
查看完整版本: 为什么python print((2**2)**32)可以输出,print(2**2**32)不能啊