int
と long
は、ILP32 では実際には区別されないため、意図的あるいは非意図的にそれらは交換可能であると仮定して、既存のコードの多くで区別することなく使用されています。このように仮定しているコードは、ILP32 および LP64 で動作するように変更する必要があります。ILP32 データ型モデルでは int
と long
の両方が 32 ビットですが、LP64 データ型モデルでは long
は 64 ビットです。次に例を示します。
int waiting; long w_io; long w_swap; ... waiting = w_io + w_swap;
この場合、次の警告が出ます。
warning: assignment of 64-bit integer to 32-bit integer