整数定数
整数定数は,10 進数(基数 10),8 進数(基数 8),あるいは 16 進数(基数 16)のいずれかです。サフィクスがない場合には,定数(L,U がない場合) に示すように,整数定数のデータ型はその整数定数の値から導き出されます。10 進定数と 10 進以外の定数では規則が異なる点に注意してください。
10 進定数
10 進定数は 0 から 4, 294, 967, 295 までが有効です。この制限を超える定数は切り捨てられます。10 進定数では,先頭にゼロを使うことは認められていません。ゼロで始まる整数定数は 8 進定数として解釈されます。このため,
int i = 10; /*10 進の 10 */ int i = 010; /*10 進の 8 */ int i = 0; /*10 進の 0 = 8 進の 0 */
8 進定数
ゼロで始まるすべての定数は 8 進定数と解釈されます。8 進定数に,8 進の記法では許されない 8 または 9 を含んでいる場合はエラーとなります。また,037777777777 を超える 8 進定数は切り捨てられます。
16 進定数
0x または 0X で始まるすべての定数は 16 進定数と解釈されます。0xFFFFFFFF を超える 16 進定数は切り捨てられます。
倍長および符号なしサフィクス
整数定数の後ろに L または l が付けられると,その定数は long(倍長)型であることを表します。同様に,サフィクス U または u は,unsigned(符号なし)型を表します。数値それ自体が 10 進で 65, 535 を超える場合には,その定数の基数とは関係なく,unsigned long になります。サフィクス L と U は,順序,大文字小文字に関係なく,1 つの定数に使用することができます(ul,lu,UL など)。
サフィクス(U,u,L,l)の付いていない定数のデータ型は,以下の型のうち,その定数の値が有効範囲内にある最初(左に表記されている)のものになります。
|
10 進定数 |
int, long int, unsigned long int |
|
8 進定数 |
int, unsigned int, long int, unsigned long int |
|
16 進定数 |
int, unsigned int, long int, unsigned long int |
サフィクス U または u が付いている定数のデータ型は,その値が unsigned int の範囲内であれば unsigned int に,unsigned long int の範囲内であれば unsigned long int になります。
サフィクス L または l が付いている定数のデータ型は,その値が long int の範囲内であれば long int に,unsigned long int の範囲内であれば unsigned long int になります。
サフィクス u と l(ul,lu,Ul,lU,uL,Lu,LU,UL)が付いている定数のデータ型は,unsigned long int になります。
整数(L,U がない場合)では,3 種類の基数における整数定数の型と定数の値の範囲をまとめています。表に示されているデータ型は,サフィクス L または U によるオーバーライドはないものとしています。