任何人都可以解释为什么这不能给出正确的答案?它与溢出有关吗?
$ echo $(((729669216169173060 * 256) + 73))
2327878602212787273
Run Code Online (Sandbox Code Playgroud)
但答案应该是186795319339308303433.
bash算术可以将整数保存为64位有符号long int.这意味着允许的最大数量是:
9223372036854775807
Run Code Online (Sandbox Code Playgroud)
如果你这样做:
echo $((9223372036854775807 + 1))
-9223372036854775808
Run Code Online (Sandbox Code Playgroud)
所以溢出发生了.而你正在努力:
729669216169173060 * 256
186795319339308303360
Run Code Online (Sandbox Code Playgroud)
这远不止于此9223372036854775807.