数値定数の表記
C言語では、1,2,3,4,...,10,11,12,14,...といった数値については、普通に表記すればそのまま10進数の数値定数となります。
16進数の場合は、頭に「0x」を付け、0xab98のように表記します。なお、a,b,c,d,e,fの表記は小文字でも大文字でも構いません。
そのほか、C言語では慣習的に8進数での表記が用いられることがあります。数値の頭に単に「0」を付けると8進数とみなされます。したがって、0377は8進数であり、これは16進数の0xffつまり10進の255に等しい値です。
10進の値を表記する際、桁数を揃えるつもりで頭に「0」を付けると8進数とみなされて、エラーになったり意図しない値になったりするため、注意してください。
表4.1 10進数・16進数・8進数
10進数 16進数 8進数
0 0x0 00
1 0x1 01
2 0x2 02
3 0x3 03
4 0x4 04
5 0x5 05
6 0x6 06
7 0x7 07
8 0x8 010
9 0x9 011
10 0xa 012
11 0xb 013
12 0xc 014
13 0xd 015
14 0xe 016
15 0xf 017
16 0x10 020
17 0x11 021
: : :
254 0xfe 0376
255 0xff 0377
256 0x100 0400
257 0x101 0401
: : :
整数型intの宣言
C言語の変数の型には、多数の種類がありますが、ここでは、整数型のintだけを覚えることにします。
多くのコンパイラでは、intは符号つき32bitの変数として実装されています。したがって、int型の変数が取り得る値は、10進で-2147483648~2147483647(16進で0x80000000~0x7fffffff)となります。
変数は、関数の冒頭(または{ }で囲まれた複文内の冒頭)であらかじめ宣言しなければなりません。int型変数iを宣言するには、
int i;
と書きます。
複数のint型変数を宣言する場合は、
int i;
int j;
int k;
のように書いても構いませんが、カンマ(,)でまとめて、
int i, j, k;
と書くこともできます。
変数名の付け方
変数名には英小文字、英大文字、数字、アンダースコア(_)が使えます。ただし、始めの1文字は数字以外で始まる必要があります。英字の大文字と小文字は区別されます。文字数にはとくに制限はありません。
また、変数名として表4.2の予約語と同じ単語は使えません。予約語は、C言語の文法上で特定の意味を持っている単語であり、表4.2のとおり、32語があらかじめ予約されています。
表4.2 予約語の表
auto break case char const continue default do
double else enum extern float for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while
変数名は、以上の規則を満たしていればどのように付けても構いませんが、プログラム中で一時的に使用するような変数にはi,j,kなどの短い名前を付け、ある程度広い範囲で使用する変数には、たとえばsum, total, file_nameなどの、意味がわかりやすい変数名を付けるようにするとよいでしょう。
printf()で数値を出力
整数の値はprintf()を使って表示することができます。printf()は、単に"Hello World"などの文字列を表示するためだけの関数ではなく、文字列の書式指定文字列によって整数値の表示などを行なうことができる関数です。
書式指定文字列は「%」の記号で始まります。ここでは、int型の変数の値を10進数として表示するための、
%d
のみを覚えることにします。
printf()関数の第1引数の文字列の中に「%d」を書くと、この「%d」の部分がprintf()の第2引数に付けたint型の変数の値の10進数表記に置き換わります。第1引数の文字列の中の「%d」は、必要に応じて2つ以上書くこともでき、その場合は、順に第2引数、第3引数…のint型変数の値に置き換わります。それらに対応したint型の変数を第2引数以降に順に付ける必要があります。第1引数に「%d」を記述した場合、第2引数以降に対応するint型変数を引数として必ず付けなければならないことに注意してください。
なお、第1引数の文字列中で「%」そのものを表示させたい場合は「%%」と記述します。
ini型変数i,jにそれぞれ1,2を代入し、これらの値をprintf()で表示するプログラムをリスト4.1に、その実行例を図4.1に示します。
リスト4.1 print_int.c
#include
int
main()
{
int i, j;
i = 1;
printf("i = %d\n", i);
j = 2;
printf("i = %d, j = %d\n", i, j);
return 0;
}
図4.1 実行例:print_int.c
$ gcc -O2 -o print_int print_int.c
$ ./print_int
i = 1
i = 1, j = 2
$