連載
» 2010年02月10日 10時00分 公開

目指せ! Cプログラマ(3):Cの基本:いま、使っている型を意識しよう (1/3)

プログラミング言語の基本となる「C」。正しい文法や作法を身に付けよう。Cには確かに学ぶだけの価値がある(編集部)

[長沼立巳, 小山博史,@IT]

 第2回「Cプログラミングに必要な環境をそろえよう」で、Cプログラムの作成ができるようになったので、今回からCの文法の説明に入ります。

 まず、変数定数について学びましょう。プログラムはいくつもの処理を行います。その処理の対象となるものとしてもっとも基本的なものが、変数や定数です。

 また、定数や変数について知るには、データの型というものについての知識が必要です。Cにおいては、データの型をきちんと意識してプログラミングすることが上達への近道なのです。

新しいプロジェクトの作成

 変数と定数の説明に入る前に、これから出てくるサンプルプログラムを作成するための手順を確認しておきましょう。ここでは「Hello World ANSI C プロジェクト」をテンプレートプロジェクトとして利用します。

 統合開発環境Pleiades(プレアデス)でのプログラム作成は、プロジェクトの作成から始めます。メインメニューの[ファイル]−[新規]−[C プロジェクト]を選択し、プロジェクト名(例えばSample1)を入力したあと、プロジェクトタイプを選びます。ここでは、[実行可能]の下にある「Hello World ANSI C プロジェクト」を選択し、[完了]ボタンを押してください。

 この方法で作成すると、ソースフォルダ(src)とソースファイル(プロジェクト名.c)が自動的に作られます(画面1)。

画面1 プロジェクト・エクスプローラ
プロジェクト・エクスプローラ

 ソースファイルには、Hello Worldプログラムが自動的に作られます。サンプルプログラムの動作を確認するときは、Hello Worldプログラムをサンプルプログラムに書き換えてください。コンパイルと実行の手順は、前回説明したHello Worldプログラムの実行手順と同じです。

変数・定数と型

 変数とは、値を記憶するための場所のことで、オブジェクトとも呼ばれます。変数と値には型があり、変数の型と同じ型の値だけをその変数に入れられます。

図 変数・定数と型

 数の合計を求めるプログラムで考えてみると分かりやすいでしょう。

●Sample1.c
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    int sum;
    sum = 30 + 40 + 50 + 60 + 70;
    printf("sum : %d\n", sum);
    return EXIT_SUCCESS;
}

 プログラムが入力ができたら、実行してみましょう。

●実行結果
sum : 250

 ここで6行目を見てください。sumという変数を宣言しています。宣言された変数には値を入れる(代入する)ことができます。7行目では、5つの数の合計を算出し、その値を変数sumに入れています。

 Cでは、変数を利用する前に宣言が必要となります。6行目の変数宣言を削除してコンパイルすると、GCCでは「`sum' undeclared」というコンパイルエラーが出ます。これは、「sumという変数が宣言されていない」というエラーです。

 変数の宣言には型が必要で、型によりその変数に入れられる値が制限されます。「int sum;」と書くことで、変数sumは、intという型で宣言されたということになります。

 int型の変数には整数が入れられるので、変数sumには整数が入ります。このプログラムでは5個の数を合計した250という整数の値を、sumという整数型の変数に入れています。

符号付き整数型と符号なし整数型

 Cには、int以外にもたくさんの型が用意されています。サンプルプログラムでも使用したintのように、整数を表すことができる整数型には次のものがあります。

  • char
  • signed char(unsigned char)
  • short int(unsigned short int)
  • int(unsigned int)
  • long int(unsigned long int)
  • long long int(unsigned long long int)
  • 列挙型
  • _Bool (*1)

【*1】 _Bool型はC99から追加された論理型です。しかし、論理型を使いたいのであれば_Boolは使わず、処理系にすでに定義されている論理型を使うか、あるいはstdbool.hをインクルードして使うと良いでしょう。stdbool.hには_Boolに相当するboolや、trueとfalseというマクロも定義されています


 特に、後ろにカッコが付いている5つの型は、符号付き整数型といいます。符号(sign)とは、正か負かを表すプラスやマイナスのことです。符号付き整数型には、正と負の整数が入れられます。

 カッコ内は、その手前の符号付き整数型に対応する符号なし整数型です。符号なし整数型では零(0)と正の整数しか入れられません。

 なお、型の書き方にはいくつか注意点があります。次のように、書き方が別でも同じ型を意味していることがあります。

  • short int、int、long int、long long intは、先頭にsignedを付けても同じ意味になります(「int」と「signed int」は同じ)
  • short int、long int、long long intのintは省略できます。usigned short int、unsigned long int、unsigned long long intも同様にintが省略できます(「short int」と「short」は同じ)
  • 上記2つの組み合わせもできます(「long int」と「signed long」は同じ)

 charの扱いは注意が必要です。単にcharと書くと、signed charかunsigned charの、いずれかと同じと解釈されます。どちらになるかはコンパイラによって変わります。

 GCC 3.4ではsigned charと同じとして解釈されますが、コンパイルオプションによって変更することもできます。そのため、charと書いてあるソースプログラムを読んだり、charとプログラムに書く場合には注意が必要です。

 移植性を考えたいときにはcharを使わず、signed charかunsigned charを使うことをお勧めします。

 整数型の中でも、char、signed char、unsigned charの3つのことを文字型と呼びます。

●コラム 文字型は整数型

なぜ文字型が整数型に含まれるのかを疑問に思う人もいるでしょう。

コンピュータで文字を処理するためには、コンピュータが扱えるもので文字を表現する必要があります。このため、一般的には、文字に文字コードといわれる整数値を割り当てて、コンピュータで文字の処理をしています。

この整数値の文字コードがあることを知ると、文字型が整数型であることも、それほどおかしいことではないと感じると思います。


 小数を表すことができる型に、実浮動小数点型があります。実浮動小数点型は次の3つです(*2)。

  • float
  • double
  • long double

【*2】 C99では、複素数を扱える_Complex型も浮動小数点に追加されています


 ここまでで紹介した、char型、符号付き整数型、符号なし整数型、実浮動小数点型を、基本型と呼びます。

Index

Cの基本:いま、使っている型を意識しよう

Page1
新しいプロジェクトの作成
変数・定数と型
符号付き整数型と符号なし整数型

Page2
変数の宣言
識別子の命名規則
型の大きさ

Page3
値の内部表現
定数
型名定義
Cにおける型の重要性
今回学んだこと


       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。