LISPデータタイプ(整数)
整数
整数は小数点を含まない数。 AutoLISP の整数は、32 ビットの符号付き整数で、範囲は +2,147,483,647 から -2,147,483,648 までだが、getint 関数については +32767 から -32678 までの 16 ビットの整数の受け付けとなる。 AutoLISP の式で整数を明示的に使用すると、その値は定数として認識される。 2、-56、1,200、196 などは AutoLISP の有効な整数。
整数の最大範囲を超える数値を入力すると(整数オーバーフローが発生し)、AutoLISP は整数を実数に変換する。*1 … IJCADでは変換されない(2010年9月現在)
2 つの有効な整数に対して算術演算を実行し、その結果が整数の最大範囲を超えた場合は、結果として得られた数値は無効になる。 次の例は、AutoLISP がどのように整数オーバーフローを処理するかを示している。
正の最大整数値を入力すると、入力した値は保持される。
_$ 2147483647 2147483647
指定可能な最大値よりも大きい整数値を入力すると、その値は実数として返される。
_$ 2147483648 2.14748e+009
算術演算で 2 つの有効な整数を指定できるが、その結果として整数オーバーフローが発生すると、結果は間違ったものになる。
_$ (+ 2147483646 3) -2147483647
この例では、2 つの正の数値を加算することにより負の数値が得られたため、結果は明らかに間違っているが、次の演算では正しい結果が得られる。
_$ (+ 2147483648 2) 2.14748e+009
このケースでは、AutoLISP は 2147483648 を有効な実数に変換してから、その数値に 2 を加算するため結果として有効な実数になる。
負の最大整数値を入力すると、入力した値は保持されます。
_$ -2147483647 -2147483647
指定可能な負の最大値よりも大きい負の整数を入力すると、その値は実数として返されます。
_$ -2147483648 -2.14748e+009
次の演算は、AutoLISP がまず最初にオーバーフローしている負の整数を有効な実数に変換するため、正しく実行されます。
_$ (- -2147483648 1) -2.14748e+009
整数の範囲による結果の有効性
値 | 計算結果の整数範囲 | 結果の有効性 |
---|---|---|
範囲内整数 | 範囲内 | 有効 |
範囲内整数 | 範囲外 | 無効 |
範囲外整数 | 範囲内 | 有効(実数) |
範囲外整数 | 範囲外 | 有効(実数) |