batch-file - 为什么不能直接在 `set/A`的表达式中使用-2147483648?

标签 batch-file cmd

您可能已经注意到,-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/

相关文章:

java - 将批处理文件中的数据获取到java程序

windows - FORFILES date -after-(cmd 文件中的日期计算)

c# - 运行需要 "Security Message"的命令行 (cmd)

java - 转义参数中的非法字符

windows - 我无法通过命令行连接和上传到 FTP

c - 如果调试中途停止,在 Windows C 控制台应用程序中运行 JVM 会变成僵尸

windows - 如何在 CMD/Batch 中将数字拆分为单个数字

batch-file - 批处理 : ampersand causing issues with findstr

batch-file - 搜索两个字符串,然后将结果相加

java - Windows 批处理文件 - 检查 JAVA_HOME 是否包含 java 7