Bash指数限制

3
我希望了解在Bash中执行$[a**b]操作的最大值原因。
$ echo $[2**62]
4611686018427387904
$ echo $[2**63]
-9223372036854775808
$ echo $[2**64]
0

2
旁注:$[...]非常老旧且已弃用,您应该使用$((...))代替。Bash手册甚至不再提及$[...] - Benjamin W.
1个回答

5
根据Bash手册中的Shell Arithmetic

计算使用固定宽度整数,没有检查溢出

因此,在64位平台上,对于有符号整数,我们在2的63次方处进行包装:
$ echo $((2**63-1))
9223372036854775807
$ echo $((2**63))
-9223372036854775808

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接