正如您可能已經注意到的那樣,-2147483648 = -2 是有符號的32位整數範圍的負極限。爲什麼我不能直接在`set/A`的表達式中使用-2147483648?
當我嘗試從字面上使用這個值...:
set /A -2147483648
...,會出現以下錯誤:
Invalid number. Numbers are limited to 32-bits of precision.
不過,我可以聲明正限制2147483647 = 2 - 1沒有任何問題:
set /A 2147483647
那麼爲什麼set /A
表現如此,儘管這個數字完全在有符號二進制補碼32位整數的適用範圍內?
有沒有辦法在set /A
表達式中直接聲明常量-2147483648?
我知道,我可以使用一個預設爲該值的變量,如set NEGLIM=-2147483648
,然後以未展開的方式使用它,例如set /A NEGLIM
,但是沒有提供該值的直接方法嗎?
由於程序對待數字作爲一個正的32位數,然後否定它?只是一個猜測。 – Mick
我已經調查過這個問題,以及與CMD.EXE中的數字解析相關的許多其他問題。我在DosTips的[CMD.EXE如何解析數字的規則](http://www.dostips.com/forum/viewtopic.php?t=3758)中發佈了我的結果。我想你會覺得很有趣。 – dbenham
哇,我印象深刻,工作很好!非常感謝鏈接!我真的很震驚在Windows XP和更高版本中'set/A'的行爲差異......:-O – aschipfl