C言語の主要リテラル

リテラル(literal)とは値そのものを表すソースコード上での記述の事です。

## 整数リテラル

整数リテラルは8,10,16進数のどれかで書いた整数値です。

このように、もともとの意味の文字列に、意味を付加するためにつける文字を接頭辞(プレフィクス)、接尾辞(サフィックス)と言います。

- 文字列の先頭につくのが、プレフィクス 0xF5BC の 0xがプレフィックス - 文字列の後ろにつくのが、サフィックスです。 0.05f のfがサフィックス

ファイルの拡張子なども(file.txtの.txt)サフィックスの一種です。

整数リテラルを記述すると、その大きさ(2進数での長さ)が評価されて、処理系で定められた型に自動的に変換されます。

例)
15 ⇒ int (short)
2147483648 ⇒ intが4byteなら long

この型の自動選択はサフィックス(suffix、接尾辞)を付ける事で明示的に型を決定できます。

サフィックス
機能
L
型をlong→long longに制限 10l
LL
型をlong longに制限 10ll
u
型をunsignedにする 4u

例えば12Lはintに収まる値ですが、Lがあるのでlong型になります。大文字・小文字はどちらでもよいのですが、小文字のlはフォントと次第で数字の1と紛らわしくなるので避けた方がよい。
またUよりはuの方が数字と高さが揃わなくて見やすいと思われます。

8,16進数でも、あまり変わらん感じで書きます。

## 浮動小数点リテラル

浮動小数点数については

- 普通の小数:0.007297 (固定小数点表記) - 指数表記 :7.297E-3 (科学的記数法、浮動小数点表記)

があります。指数表記の底は 10 で、別に仮数の制限は無いので0.7297E-2と書いても同じ事です。Eはeでもよく、指数の符号が+の場合は省略できます。(7.297E13)

小数点の前後の0は省略ができ、.1は0.1に、1.は1.0に等しい意味を持ちます。
実数リテラルは基本的にdouble型で、サフィックスにより型の指定ができます。
(この時点で、1. と 1 はプログラマの頭の中での値は同じだが、コンピュータプログラム上での値(=型)は別物であることに注意)

サフィックス
F
float 0.5f
L
long double 0.5l

## 文字リテラル

一つの文字はシングルクォート'で囲んで表します。

例)
'a'
'B'
'*'
など

文字リテラルは実際には、ASCII コードそのものです。
例えば'A'は0x41と書くのと同じ事になります。ASCIIコードはCの大体の処理系で共通の値で扱われます。
(参考「データの表現

文字リテラルはcharではなくint型に変換されます。(これもCの難解なところ。。。)
実際に、標準入力(コンソール)から1文字だけ文字を取得するC言語の関数 getchar()がありますが、
getchar()関数は、入力から1文字受け取って、そのアスキーコードをintで返してきます。
(getchar()なのに、intの変数で受けるとか、とても難解)

例えば、

char  c = 'b';

では、intの'b' = 0x62 = 98 が変数のcharへ型変換されて、初期化値として使われています。

#### エスケープシーケンス

制御文字(改行や、終端文字、タブやベル)などそのまま書くと文法的に問題があるものは、以下のエスケープシーケンスを用います。

表記
表される文字
\'
シングルクォート'
\\
バックスラッシュ \
円マークに見えるかもだけど本当はバックスラッシュ
\a
アラート(alert)
\b
バックスペース(backspace)
\f
フォームフィード(form feed)
\n
改行(new line)
\r
キャリッジリターン(carridge return)
\t
水平タブ(horizontal tab)
\v
垂直タブ(vertical tab)

また\8進数か\x16進数でアスキーコードの値を直接指定する事もできる。

char c = \0155; /* m:109(10進数)の8進数表記 */
char d = \x6d; /* m:109(10進数)の16進数表記 */

## 文字列リテラル

文字列はダブルクォート“で囲んで表します。

文字列リテラルは基本的にメモリの読み込み専用領域へchar配列として配置され、そのアドレスが実際の値になります。例えば

char str[] = "jc21";

は、{ 'j', 'c', '2', '1', '\0' }が格納された文字配列(の先頭要素)のアドレスによりポインタstrを初期化します。
(末尾には文字列の終端を表す終端文字(=ヌル文字)が挿入されるので、配列の大きさは文字数+1になることに注意)