MMGamesロゴ  MMGames
Twitterシェアボタン  Facebookシェアボタン   
しんで覚えるC言語
しんで覚えるC言語

数値の表示

文字列と数値
前章では、画面に文字列を表示する方法を説明しました。
しかし、画面に文字列しか表示出来ないのでは、困ることがあります。

コンピュータは、計算を行う機械です。
しかし、文字列は、あくまでも文字列に過ぎませんから、計算に使うことはできません。
計算を行う場合には、数値として扱わなければなりません。
数値であれば、当然、計算に利用できます。

数値と数字
日常生活では数値も数字も同じ意味の言葉かもしれませんが、
コンピュータの世界では明確に区別されています。
数値は数を表現するもので、計算に使うことができます。
数字は(人間の都合上)数値と同じ見た目であるに過ぎず、
コンピュータにとって数を表現するものではなく、計算に使えません。

C言語では、文字列と数値は、書き方によってはっきり区別されています。
C言語において、文字列とは、"" で囲まれた間のことを意味しています。
逆に言えば、"" で囲まれていれば、すべてが文字列となります。

前章で作成したプログラムを思い出してみてください。

ソースコード
#include <stdio.h>

int main(void)
{
    printf("HelloWorld");
    return 0;
}

printf関数は、文字列を表示する関数でした。
したがって、printf関数には文字列を渡さなくてはなりません。
だからこそ、HelloWorld を、"" で囲んでいたのです。

この様に、"" で囲まれた文字列を、とくに文字列リテラルと呼ぶことがあります。

キーワード
【文字列リテラル】

プログラム中に埋め込まれている、"" で囲まれた文字定数。


C言語では、数値を書く場合、特別な書き方を使う必要はありません。
ただ、数字を並べて書けば、それは数値として扱われるのです。
しかし、数字を並べた場合でも、"" で囲んだ場合には文字列として扱われます。
つまり、次の例のように扱われるのです。

数値と文字列
1234 は数値
"1234" は数字(文字列)

繰り返しますが、計算に使うことができるのは、数値だけです。
数字は、計算に使うことができません。
数値を表示する
printf関数は、あくまでも文字列を表示する関数です。
しかし、ありがたいことに、数値を表示する機能も持ち合わせています。

printf関数で数値を表示するには、出力変換指定子を使用します。
これは、文字列の中に埋め込んで使われる、記号の一種です。

キーワード
【出力変換指定子】

外部のデータを文字列に変換して表示したい時に、
その変換方法を指定する記号。


出力変換指定子には色々な種類がありますが、もっとも良く使われるのは、
整数値を文字列に変換する、%d 指定子です。
この指定子の部分には、後ろで指定した数値を数字に変換した結果が表示されます。

とにかく、百聞は一見にしかずですから、使い方を見てみます。
次のプログラムは、数値 100 を表示するプログラムです。

ソースコード
#include <stdio.h>

int main(void)
{
    printf("%d", 100);
    return 0;
}

このプログラムの実行結果は、次の通りになります。

実行結果
100

ここでは、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言語は、半角文字だけでなく、全角文字も表示できます。
ただし、半角文字を基本としているため、
全角文字を本格的に使用するとやっかいな点が多々あります。
表示するだけならば問題はありません。
(海外製のコンパイラでは問題が起こることがあります。)

このプログラムの実行結果は、次の通りになります。

実行結果
100円

この方法で一見問題がないようにも見えますが、良く考えてみると、
1行表示するために、printf関数をわざわざ2回に分けて使っています。
1行表示するのに、printf関数を1回で済ませた方が簡単になります。

%d指定子は、他の文字列と組み合わせて使うことができます。
文字列の中に%d指定子を使うと、その部分が数値に置き換えられるのです。
次のプログラムは、printf関数1回で100円を表示する例です。

ソースコード
#include <stdio.h>

int main(void)
{
    printf("%d円\n", 100);
    return 0;
}

このプログラムの実行結果は、次の通りになります。

実行結果
100円

この様に、%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;
}

このプログラムの実行結果は、次の通りになります。

実行結果
100+200=300

この方法で一見問題がないようにも見えますが、良く考えてみると、
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;
}

このプログラムの実行結果は、次の通りになります。

実行結果
100+200=300

このプログラムでは、%d指定子は前から順番に、後の数値に1対1で対応しています。


本サイトについて

苦しんで覚えるC言語(苦C)は
C言語入門サイトの決定版です。
C言語の基本機能を体系立てて解説しており、
市販書籍と同等以上の完成度です。

第0部:プログラム概要編
  1. プログラムとは何か?
2章:プログラムの書き方
  1. 書き方のルール
  2. 書き方の慣習
  3. 練習問題2
3章:画面への表示
  1. 文字列の表示
  2. 改行文字
  3. 練習問題3
6章:キーボードからの入力
  1. 入力用の関数
  2. 入力の恐怖
  3. 練習問題6
9章:回数が決まっている繰り返し
  1. 繰り返しを行う文
  2. ループ動作の仕組み
  3. 練習問題9
10章:回数がわからない繰り返し
  1. 回数不明ループ
  2. 入力チェック
  3. 練習問題10
13章:複数の変数を一括して扱う
  1. 複数の変数をまとめて扱う
  2. 配列の使い方
  3. 練習問題13
20章:複数のソースファイル
  1. 最小限の分割
  2. 分割の定石
  3. 練習問題20

コメント
COMMENT

💬 コメント投稿欄を開く