数値定数の表記
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型変数を宣言する場合は、
のように書いても構いませんが、カンマ(,)でまとめて、
と書くこともできます。
変数名の付け方
変数名には英小文字、英大文字、数字、アンダースコア(_)が使えます。ただし、始めの1文字は数字以外で始まる必要があります。英字の大文字と小文字は区別されます。文字数にはとくに制限はありません。
また、変数名として表4.2の予約語と同じ単語は使えません。予約語は、C言語の文法上で特定の意味を持っている単語であり、表4.2のとおり、32語があらかじめ予約されています。
変数名は、以上の規則を満たしていればどのように付けても構いませんが、プログラム中で一時的に使用するような変数には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に示します。