第二章 データ型


第一章で、文字を画面に表示する方法を学びました。
今度は、c言語で取り扱うことのできる、整数,小数,文字のデータ型について基本的な使い方を学びます。

ここで、イメージ的にわかりやすいかなと思い、本文の中で“箱”という表現をしていますが、
c言語の関数とは数学の関数と同じようなものなので、“変数”が正しいです。

つまり、本章の説明は main 関数の変数についての説明です。

int
整数を入れる箱(変数)を作ります。

<int>
#include<stdio.h>
main()
{
    int a;    /* aという名の整数を入れられる箱を作ります */
    a=10;   /* 箱aに整数 10 を入れています */
    printf("a=%d\n",a);    /* %dの部分が箱aに入っている値になります */
}
<実行結果>
a=10

printf の " " 内にある %d は、
後にある , で区切られた(整数を入れられる)箱 a の中にある値を、
その %d の位置へ代入させます。%d は整数を扱うときに用いる記号です。

つまり、printf 関数の部分は
        printf("a=10\n");
と同じことになります。

学び始めたばかりの頃は、main 関数内の各行にある ; を忘れやすいので注意してください。

また、プログラム中の /* */ で区切られた内部に書かれたものはコメントといい、
何を書いてもコンパイラによって無視されるため、プログラムの実行とは関係ありません。
主に、プログラムに簡単な説明をつけるときに用いられます。

float,double
小数を入れる箱(変数)を作ります。

<float,double>
#include<stdio.h>
main()
{
    float a;      /* aという名の小数を入れられる箱を作ります */
    double b;   /* bという名の小数を入れられる箱を作ります */
    a=0.1;   /* 箱aに小数 0.1 を入れています */
    b=1.0;   /* 箱bに小数 1.0を入れています */
    printf("a=%f\n",a);     /* %fの部分が箱aに入っている値になります */
    printf("b=%lf\n",b);    /* %lfの部分が箱bに入っている値になります */
}
<実行結果>
a=0.100000
b=1.000000

int の場合と異なり、float では %f を、double では %lf を用います。
double の %lf は、数字の 1 ではなく英語の“エル”です。

float と double の違いは次のようになります。
  float の方が、 double より表現できる桁が小さく、プログラムの実行時間が少し短い。
  double の方が、 float より表現できる桁が大きく、プログラムの実行時間が少し長い。

実行時間ですが、double でもほとんどの場合気になることはないので、
あまり考えず double でいいと思います。

char
1文字を入れる箱(変数)を作ります。

<char>
#include<stdio.h>
main()
{
    char a;    /* aという名の1文字だけ入れられる箱を作ります */
    a='A';      /* 箱aに文字Aを入れています */
    printf("aの大文字は%c\n",a);    /* %cの部分が箱aに入っている文字になります */
}
<実行結果>
aの大文字はA

%c は1文字を扱うときに用います。

printf の %c の位置に、a の中身を代入するので、printf 関数の部分が
        printf("aの大文字はA");
と同じことになります。

(注意)char の1文字とは、半角1文字のことなので、日本語は入れられません。
日本語は全角なので、半角2文字分の箱が必要になります。
日本語を入れる場合は次で説明します。

文字列を扱うときは次のようになります。

<文字列>
#include<stdio.h>
main()
{
    char a[10]="c言語"; /* 文字を入れる箱を10個分作り、「c言語」という文字を入れています */
    printf("%s\n",a);        /* 箱a内の文字列を%sの部分に代入します */
}
<実行結果>
c言語

文字列を扱うときは、%c ではなく %s です。

また、文字列を入力するときは、今までみたいに
   char a[10];
   a="c言語";
と2行に分けて、上記のように入力することはできません。
これは、まだ習っていない“ポインタ”が関係するので、今はこういうものだと思っててください。

char a[10]; の 10 は何文字入れられるようにするかを決めるもので、
10 だと9文字入れられます。
日本語だと、2文字分必要なので4文字です。

なぜ、10 なのに1少ない9文字になるかというと、
文字列は、文字列の終了を示す \0 (ヌル文字)と呼ばれる記号が、
一番最後に必ず付け加えられるからです。


つまり、この場合、入力された文字列は
   c言語\0
となるのです。
このことにより、1文字入力のときと比べて、' ' が " " になっています。

ちなみに、\0 はアルファベットと同じ半角1文字分の箱に入ります。
よって、この場合、
   c言語\0
   1+2+2+1 =6文字
となり、char a[6]; でよいことになります。

<前に戻る  |目次|  次へ進む>