C言語 | C言語入門 | 定数
この記事では、数値や文字などの固定値をソースコードに記述する方法を説明する。
接尾辞
100 のような数値や文字列リテラルなどの固定値を定数と呼ぶ。数値定数は整数定数と浮動小数点定数に分けられる。接尾辞のない整数は通常 int 型、小数点を含む値は double 型として扱われる。
別の型を明示するには接尾辞を使う。
表1 - 整数の接尾辞
| 接尾辞 | 型 | 記述例 |
|---|---|---|
l または L |
値に応じて long int または unsigned long int |
123456789L |
u または U |
値に応じて unsigned int または unsigned long int |
123456789U |
l または L と u または 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.14F が float 型であることを明示している。
定数のさまざまな表記
浮動小数点定数には指数表記を利用できる。次の値はいずれも 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;
}
0xFF と 0377 は、どちらも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進数の値 |
エスケープシーケンスは、改行、タブ、リテラル内の引用符など、直接記述しにくい文字に利用する。