お気づきのように、-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
は、符号付き2の補数の32ビット整数の完全な適用範囲内ですが、なぜそのように動作しますか?
そして定数-2147483648をset /A
の式に直接記述する方法はありますか?
set NEGLIM=-2147483648
のような値にプリセットされている変数を使用して、set /A NEGLIM
のような拡張されていない方法で使用できますが、その値をすぐに提供する方法はありませんか?
numberを正の32ビット数として返し、それを否定しますか?ちょうど推測。 – Mick
私はCMD.EXE内の数値解析に関連する他の多くの問題と同様に、この問題についても調査しました。私はDosTipsの[CMD.EXEがどのように数値を解析するかに関する規則](http://www.dostips.com/forum/viewtopic.php?t=3758)で結果を公開しました。あなたはそれが面白いと思うでしょう。 – dbenham
うわー、私は感動して、いい仕事です!リンクをありがとう!私はWindows XP以降のバージョンでの 'set/A'の動作の違いに本当にショックを受けています... -O – aschipfl