数値の表示
文字列と数値
前章では、画面に文字列を表示する方法を説明しました。
しかし、画面に文字列しか表示出来ないのでは、困ることがあります。
コンピュータは、計算を行う機械です。
しかし、文字列は、あくまでも文字列に過ぎませんから、計算に使うことはできません。
計算を行う場合には、
数値として扱わなければなりません。
数値であれば、当然、計算に利用できます。
日常生活では数値も数字も同じ意味の言葉かもしれませんが、
コンピュータの世界では明確に区別されています。
数値は数を表現するもので、計算に使うことができます。
数字は(人間の都合上)数値と同じ見た目であるに過ぎず、
コンピュータにとって数を表現するものではなく、計算に使えません。
C言語では、文字列と数値は、書き方によってはっきり区別されています。
C言語において、
文字列とは、"" で囲まれた間のことを意味しています。
逆に言えば、"" で囲まれていれば、すべてが文字列となります。
前章で作成したプログラムを思い出してみてください。
#include <stdio.h>
int main(void)
{
printf("HelloWorld");
return 0;
}
printf関数は、文字列を表示する関数でした。
したがって、printf関数には文字列を渡さなくてはなりません。
だからこそ、HelloWorld を、"" で囲んでいたのです。
この様に、"" で囲まれた文字列を、とくに
文字列リテラルと呼ぶことがあります。
【文字列リテラル】
プログラム中に埋め込まれている、"" で囲まれた文字定数。
C言語では、数値を書く場合、特別な書き方を使う必要はありません。
ただ、数字を並べて書けば、それは数値として扱われるのです。
しかし、数字を並べた場合でも、"" で囲んだ場合には文字列として扱われます。
つまり、次の例のように扱われるのです。
繰り返しますが、計算に使うことができるのは、数値だけです。
数字は、計算に使うことができません。
数値を表示する
printf関数は、あくまでも文字列を表示する関数です。
しかし、ありがたいことに、数値を表示する機能も持ち合わせています。
printf関数で数値を表示するには、
出力変換指定子を使用します。
これは、文字列の中に埋め込んで使われる、記号の一種です。
【出力変換指定子】
外部のデータを文字列に変換して表示したい時に、
その変換方法を指定する記号。
出力変換指定子には色々な種類がありますが、もっとも良く使われるのは、
整数値を文字列に変換する、
%d 指定子です。
この指定子の部分には、後ろで指定した数値を数字に変換した結果が表示されます。
とにかく、百聞は一見にしかずですから、使い方を見てみます。
次のプログラムは、数値 100 を表示するプログラムです。
#include <stdio.h>
int main(void)
{
printf("%d", 100);
return 0;
}
このプログラムの実行結果は、次の通りになります。
ここでは、printf関数に渡す文字列の中で、%dが指定されているので、
%dの部分が、あとで指定されている 100 の数値に置き換えられて表示されたのです。
文字列との組み合わせ表示
前項で、printf関数に%d指定子を使って数値を表示する方法を説明しました。
しかし、数値だけでは、一体何のことを意味しているのかがわかりにくくなります。
一口に 100 と言っても、100円、100人、100Kg、100回、など、さまざまです。
この問題を解決するには、
数値と文字列を組み合わせて表示すれば解決します。
次のプログラムは、数値と文字列を組み合わせて100円を表示する例です。
#include <stdio.h>
int main(void)
{
printf("%d", 100);
printf("円\n");
return 0;
}
C言語は、半角文字だけでなく、全角文字も表示できます。
ただし、半角文字を基本としているため、
全角文字を本格的に使用するとやっかいな点が多々あります。
表示するだけならば問題はありません。
(海外製のコンパイラでは問題が起こることがあります。)
このプログラムの実行結果は、次の通りになります。
この方法で一見問題がないようにも見えますが、良く考えてみると、
1行表示するために、printf関数をわざわざ2回に分けて使っています。
1行表示するのに、printf関数を1回で済ませた方が簡単になります。
%d指定子は、他の文字列と組み合わせて使うことができます。
文字列の中に%d指定子を使うと、その部分が数値に置き換えられるのです。
次のプログラムは、printf関数1回で100円を表示する例です。
#include <stdio.h>
int main(void)
{
printf("%d円\n", 100);
return 0;
}
このプログラムの実行結果は、次の通りになります。
この様に、%d指定子は、文字列の中に自由に埋め込んで使うことができます。
複数の数値の表示
前項では、%d指定子を文字列の中に埋め込む方法を説明しました。
この方法を使って、簡単な数式を表示することに挑戦してみましょう。
数式は
100+200=300 と言う非常に簡単な式です。
もちろん、数値を使って表示させますが、まだ
計算は行いません。
%d指定子を使えば、こんなことは屁でもありません。
次のプログラムは、100+200=300 を表示する例です。
#include <stdio.h>
int main(void)
{
printf("%d+", 100);
printf("%d=", 200);
printf("%d\n", 300);
return 0;
}
このプログラムの実行結果は、次の通りになります。
この方法で一見問題がないようにも見えますが、良く考えてみると、
1行表示するために、printf関数をわざわざ3回に分けて使っています。
1行表示するのに、printf関数を1回で済ませた方が簡単になります。
実は、%d指定子は、1つの文字列の中で何回使っても問題ありません。
%d指定子を3つ使った場合、数値も3つ指定することになります。
次のプログラムは、%d指定子を3つ使って表示する例です。
#include <stdio.h>
int main(void)
{
printf("%d+%d=%d\n", 100, 200, 300);
return 0;
}
このプログラムの実行結果は、次の通りになります。
このプログラムでは、%d指定子は前から順番に、後の数値に1対1で対応しています。