您可能已经注意到,-2147483648 = -231 是有符号 32 位整数范围的负限制。
当我尝试从字面上使用这个值时......:
set /A -2147483648
...,出现以下错误:
Invalid number. Numbers are limited to 32-bits of precision.
但是,我可以毫不费力地说明正极限 2147483647 = 231 - 1:
set /A 2147483647
那么为什么
set /A
表现得像那样,虽然这个数字完全在有符号二进制补码 32 位整数的适用范围内?有没有办法直接在
set /A
中声明常量 -2147483648表达?我知道,我可以使用一个预设为该值的变量,例如
set NEGLIM=-2147483648
,然后以未展开的方式使用它,例如 set /A NEGLIM
,但是没有立即提供该值的方法吗?
最佳答案
我提出以下解决方法:
set /A -2147483647-1
结果:
-2147483648
有趣的笔记:
set /A -2147483647-2
yield 2147483647
所以玩弄极限是危险的:)
关于batch-file - 为什么不能直接在 `set/A`的表达式中使用-2147483648?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39626525/