它可能取决于您的bash版本,操作系统和CPU体系结构。你为什么不自己尝试呢?将变量设置为(2 ^ 31)-1,然后将其递增,将其设置为2 ^ 32,然后将其递增,将其设置为2 ^ 64,然后递增,依此类推。
在这里,我只是在运行OS X“ El Capitan” v10.11.3的Core i7 Mac上自己尝试过,看起来bash正在使用带符号的64位整数。
$ uname -a
Darwin Spiff.local 15.3.0 Darwin Kernel版本15.3.0:2015年12月10日星期四18:40:58 PST;根目录:xnu-3248.30.4〜1 / RELEASE_X86_64 x86_64
$ bash --version
bash --version
GNU bash版本3.2.57(1)-发行版(x86_64-apple-darwin15)
版权所有(C)2007 Free Software Foundation,Inc.
$
$((X = 2 ** 16)); 回声$ X
65536 <-好的,至少是UInt16
$((X = 2 ** 32)); 回声$ X
4294967296 <-好的,至少是UInt32
$((X = 2 ** 64)); 回声$ X
0 <-哎呀,不是UInt64
$((X =(2 ** 63)-1)); 回声$ X
9223372036854775807 <-好的,至少是SInt64
$((X ++)); 回声$ X
-9223372036854775808 <-溢出并包裹为负。必须为SInt64
for i in {0..70}; do echo 2 to the power of $i = $((2**i)); done