SET /A コマンドで数値計算出来る値の範囲(= 上限と下限) - Windowsのコマンドプロンプト(bat,cmd)
SET コマンドは、/A オプションを付けると、数値計算モードになります。この時、SET コマンドは、符号付きの32ビット整数値を扱う事が出来ます。
o SET コマンドが正しく認識出来る数値の範囲は、-2147483648 以上 2147483647 以下です。
o この範囲を超えた時は、状況によって、エラーメッセージを出したり、適当に解釈したりします。
o 32ビット版の Windows XP Service Pack 3 で確認しました。
**** SET /A コマンドの仕様
o 正しく認識出来る整数値は、符号付きの32ビット値。-2147483648 から 2147483647 までの間です。
o 小数点は、入力出来ません。
o 文字列や空文字を設定した時は、0 として扱います。
o 数字部分の先頭に0x や 0 を付けると、16進数や8進数として扱います。
+ 負の表現も可能です。-0x3 や -03 と書きます。
**** SET /A コマンドの実際の動作
o 入力した値については、ある程度、入力チェックが働きます。(= 完全ではありません。)
o 計算結果については、下位の32ビット値だけを参照しているみたいです。
** 入力した値について
o 正しく認識出来る整数値は、符号付きの32ビット値。-2147483648 から 2147483647 までの間です。
o 入力した値が、-4294967295 以下の時、エラーとなります。
o 入力した値が、-4294967294 から -2147483649 までの範囲の時、正の値に変換します。
o 入力した値が、2147483648 から 4294967294 までの範囲の時、負の値に変換します。
o 入力した値が、4294967295 以上の時、エラーとなります。
o 並べると
+ -4294967295 の時、エラーメッセージ。ERRORLEVEL = 9168
+ -4294967294 の時、2 として計算
+ -2147483649 の時、2147483647 として計算
+ -2147483648 から 4294967294 までの範囲の時、正常に受付。
+ 2147483648 の時、-2147483648 として計算
+ 4294967294 の時、-2 として計算
+ 4294967295 の時、エラーメッセージ。ERRORLEVEL = 9168
** 計算結果について
o 計算中にオーバーフローした時は、全て、符号付き32ビット値として表示されます。
o 計算出来る範囲を超えた時は、計算結果の最下位の32ビットを取り出して表示するみたいです。
**** 確認したバージョン
o Windows XP Service Pack 3
==
関連ページ:
▼Windowsコマンド。制御文と環境変数(▼ABC順)
▼Windowsコマンド一覧(▼ABC順)
▼コマンドプロンプト画面
▼制作メモ
> IF = 条件に一致したら実行する
ELSE = IFで実行しない時に実行する
▼FOR = 繰り返し実行する
+
SET = 環境変数を表示、設定、削除する。もしくは数値計算する