2011年2月15日火曜日

SET /A コマンドで数値計算出来る値の範囲(= 上限と下限) - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。制御文と環境変数
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 = 環境変数を表示、設定、削除する。もしくは数値計算する