C言語では、数値リテラルに特定の接尾辞を付けることで、その型を指定できます。しかし、『1L』という記述が long int
なのか long double
なのか疑問に思うことがあるでしょう。本記事では、この記述が何を意味するのかを詳しく解説します。
『1L』の正しい型とは?
結論から言うと、C言語において 1L
は long int 型の 1 です。
リテラルに付けられる接尾辞のルールとして、以下のようなものがあります。
L
またはl
(小文字のL)を付けると、整数リテラルはlong int
型になるU
またはu
(大文字・小文字どちらも可)を加えるとunsigned long int
型になるF
またはf
を付けると、浮動小数点リテラルはfloat
型になるL
またはl
を浮動小数点リテラルに付けると、long double
型になる
『1L』と『1.0L』の違い
1L
と 1.0L
は異なる型を持ちます。
表記 | 型 | 説明 |
---|---|---|
1L |
long int |
整数リテラル(1)に L が付いているため、long int 型 |
1.0L |
long double |
浮動小数点リテラル(1.0)に L が付いているため、long double 型 |
つまり、『1L は long double になる』という記述があるとすれば、それは誤りです。正しくは『1.0L は long double になる』です。
間違いやすいポイント
本書の記述がどのようになっているかにもよりますが、以下のような間違いやすい点があります。
1L
と1.0L
を混同してしまう- 浮動小数点リテラルではない整数リテラルに
L
を付けた場合、long int
になる - 本の記述が誤解を招く表現になっている可能性がある
まとめ
『1L』は long int
であり、『1.0L』は long double
です。C言語では、整数リテラルと浮動小数点リテラルで接尾辞の働きが異なるため、正確に使い分けることが重要です。
参考書の記述を再確認し、もし誤った情報が記載されていた場合は、出版社の訂正情報などを確認するのもよいでしょう。
コメント