Cプログラミング入門

第9回 Chapter 4 計算してみよう(1)

この記事を読むのに必要な時間:およそ 1.5 分

数値定数の表記

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進数
00x000
10x101
20x202
30x303
40x404
50x505
60x606
70x707
80x8010
90x9011
100xa012
110xb013
120xc014
130xd015
140xe016
150xf017
160x10020
170x11021
:::
2540xfe0376
2550xff0377
2560x1000400
2570x1010401
:::

整数型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
$

著者プロフィール

山森丈範(やまもりたけのり)

「C言語はアセンブラを触っているうちに自然に覚えてしまった」というプログラマ。C言語とのかかわり上,OSは専らUNIXを使用。C言語のプログラムでは,いつもLinux/FreeBSD/Solarisすべてで動くことを気に留めている。C言語と同様に移植性の高いシェルスクリプトにも思い入れが深く,著書に『シェルスクリプト基本リファレンス』がある。

著書

コメント

  • リスト4.1について

    #includeの後に<stdio.h>と言うヘッダーファイル名が抜けてると思います。

    Commented : #1  cametan (2008/08/16, 13:14)

コメントの記入