|
第一章で、文字を画面に表示する方法を学びました。
今度は、c言語で取り扱うことのできる、整数,小数,文字のデータ型について基本的な使い方を学びます。
ここで、イメージ的にわかりやすいかなと思い、本文の中で“箱”という表現をしていますが、
c言語の関数とは数学の関数と同じようなものなので、“変数”が正しいです。
つまり、本章の説明は main 関数の変数についての説明です。
int
<int>
#include<stdio.h>
main()
{
int a; /* aという名の整数を入れられる箱を作ります
*/
a=10; /* 箱aに整数 10 を入れています
*/
printf("a=%d\n",a); /*
%dの部分が箱aに入っている値になります */
} |
<実行結果>
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に入っている値になります */
} |
<実行結果>
int の場合と異なり、float では %f を、double では %lf を用います。
double の %lf は、数字の 1 ではなく英語の“エル”です。
float と double の違いは次のようになります。
float の方が、 double より表現できる桁が小さく、プログラムの実行時間が少し短い。
double の方が、 float より表現できる桁が大きく、プログラムの実行時間が少し長い。
実行時間ですが、double でもほとんどの場合気になることはないので、
あまり考えず double でいいと思います。 |
<char>
#include<stdio.h>
main()
{
char a; /* aという名の1文字だけ入れられる箱を作ります
*/
a='A'; /* 箱aに文字Aを入れています
*/
printf("aの大文字は%c\n",a); /*
%cの部分が箱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 ではなく %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]; でよいことになります。
|
|