C言語 | C言語入門 | 定数

この記事では、数値や文字などの固定値をソースコードに記述する方法を説明する。

接尾辞

100 のような数値や文字列リテラルなどの固定値を定数と呼ぶ。数値定数は整数定数と浮動小数点定数に分けられる。接尾辞のない整数は通常 int 型、小数点を含む値は double 型として扱われる。

別の型を明示するには接尾辞を使う。

表1 - 整数の接尾辞

接尾辞 記述例
l または L 値に応じて long int または unsigned long int 123456789L
u または U 値に応じて unsigned int または unsigned long int 123456789U
l または Lu または U unsigned long int 123456789UL

表2 - 浮動小数点数の接尾辞

接尾辞 記述例
f または F float 3.14F
l または L long double 3.14L

コード1

#include <stdio.h>

int main() {
 float fVar = 3.14F;
 printf("%g\n" , fVar);
 return 0;
}

F 接尾辞によって、3.14Ffloat 型であることを明示している。

定数のさまざまな表記

浮動小数点定数には指数表記を利用できる。次の値はいずれも 3.14 を表す。

コード2

#include <stdio.h>

int main() {
 float fVar1 = .314e1F;
 float fVar2 = 314e-2F;
 float fVar3 = 31.4e-1F;
 printf("fVar1 = %g\nfVar2 = %g\nfVar3 = %g\n" , fVar1 , fVar2 , fVar3);
 return 0;
}

整数定数は10進数、8進数、16進数で記述できる。8進数には先頭に 0、16進数には 0x または 0X を付ける。

コード3

#include <stdio.h>

int main() {
 printf("0xFF = %d\n0377 = %d\n" , 0xFF , 0377);
 return 0;
}

0xFF0377 は、どちらも10進数の 255 を表す。

文字定数

文字定数は 'A' のように単一引用符で囲む。文字は数値コードとして扱われる。ASCIIでは、'A'0x41'B'0x42'C'0x43 である。

コード4

#include <stdio.h>

int main() {
 char chVarA = 'A';
 char chVarB = 0x42;

 printf("chVarA(%%X) = %X\nchVarA(%%c) = %c\n" , chVarA , chVarA);
 printf("chVarB(%%X) = %X\nchVarB(%%c) = %c\n" , chVarB , chVarB);
 return 0;
}

文字列リテラルの "A" と文字定数の 'A' は異なる種類の値である。

エスケープシーケンス

文字列や文字定数には、バックスラッシュで始まるエスケープシーケンスを指定できる。

表3 - エスケープシーケンス

シーケンス 意味
\a 警告音
\b バックスペース
\f 改ページ
\n 改行
\r 行頭へ移動
\t 水平タブ
\v 垂直タブ
\\ バックスラッシュ
\? 疑問符
\' 単一引用符
\" 二重引用符
\0 ヌル文字
\N 8進数の値
\xN 16進数の値

エスケープシーケンスは、改行、タブ、リテラル内の引用符など、直接記述しにくい文字に利用する。