式と同様に、ある整数定数の型の規則も変更されました。K&R C では、接尾辞なしの 10 進定数の型は、その値が int に収まる場合だけ int でした。接尾辞なしの 8 進定数または 16 進定数の型は、その値が unsigned int に収まる場合だけ int でした。それ以外の場合、整数定数の型は long でした。したがって、値が結果の型に収まらないことがありました。1990 ISO/IEC C 規格では、定数の型は、次のリストのうち、値を格納できる最初の型となります。
接尾辞なし 10 進数: int、long、unsigned long
接尾辞なし 8 進数または 16 進数: int、unsigned int、long、unsigned long
接尾辞 U 付き: unsigned int、unsigned long
接尾辞 L 付き: long、 unsigned long
接尾辞 UL 付き : unsigned long
ISO C コンパイラで -xtransition オプションを使用するとき、定数の型規則によって式の動作が異なる場合は警告が発行されます。古い整数定数の型規則は、移行モード (-Xt) だけで適用されます。ISO モード (-Xa) と準拠モード (-Xc) では、新しい規則が適用されます。
接尾辞なしの 10 進定数の型規則は、1999 ISO C 規格に従って変更されています。「2.1.1 整数定数」を参照してください。