LISPデータタイプ(整数)

提供:GizmoLabs - だいたい CAD LISP なサイト
2018年5月7日 (月) 06:54時点におけるGizmon (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

整数

整数は小数点を含まない数。 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


整数の範囲による結果の有効性

計算結果の整数範囲 結果の有効性
範囲内整数 範囲内 有効
範囲内整数 範囲外 無効
範囲外整数 範囲内 有効(実数)
範囲外整数 範囲外 有効(実数)