C言語における『1L』の型:long int か long double か?

プログラミング

C言語では、数値リテラルに特定の接尾辞を付けることで、その型を指定できます。しかし、『1L』という記述が long int なのか long double なのか疑問に思うことがあるでしょう。本記事では、この記述が何を意味するのかを詳しく解説します。

『1L』の正しい型とは?

結論から言うと、C言語において 1Llong int 型の 1 です。

リテラルに付けられる接尾辞のルールとして、以下のようなものがあります。

  • L または l(小文字のL)を付けると、整数リテラルは long int 型になる
  • U または u(大文字・小文字どちらも可)を加えると unsigned long int 型になる
  • F または f を付けると、浮動小数点リテラルは float 型になる
  • L または l を浮動小数点リテラルに付けると、long double 型になる

『1L』と『1.0L』の違い

1L1.0L は異なる型を持ちます。

表記 説明
1L long int 整数リテラル(1)に L が付いているため、long int
1.0L long double 浮動小数点リテラル(1.0)に L が付いているため、long double

つまり、『1L は long double になる』という記述があるとすれば、それは誤りです。正しくは『1.0L は long double になる』です。

間違いやすいポイント

本書の記述がどのようになっているかにもよりますが、以下のような間違いやすい点があります。

  • 1L1.0L を混同してしまう
  • 浮動小数点リテラルではない整数リテラルに L を付けた場合、long int になる
  • 本の記述が誤解を招く表現になっている可能性がある

まとめ

『1L』は long int であり、『1.0L』は long double です。C言語では、整数リテラルと浮動小数点リテラルで接尾辞の働きが異なるため、正確に使い分けることが重要です。

参考書の記述を再確認し、もし誤った情報が記載されていた場合は、出版社の訂正情報などを確認するのもよいでしょう。

コメント

タイトルとURLをコピーしました