我希望了解在Bash中执行
$[a**b]
操作的最大值原因。$ echo $[2**62]
4611686018427387904
$ echo $[2**63]
-9223372036854775808
$ echo $[2**64]
0
$[a**b]
操作的最大值原因。$ echo $[2**62]
4611686018427387904
$ echo $[2**63]
-9223372036854775808
$ echo $[2**64]
0
因此,在64位平台上,对于有符号整数,我们在2的63次方处进行包装:计算使用固定宽度整数,没有检查溢出
$ echo $((2**63-1))
9223372036854775807
$ echo $((2**63))
-9223372036854775808
$[...]
非常老旧且已弃用,您应该使用$((...))
代替。Bash手册甚至不再提及$[...]
。 - Benjamin W.