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