新着記事
08/24: 待ち時間・アカウントなしで4sharedにあるファイルをダウンロードするには
08/23: 色んな歌詞検索サイトから歌詞を探してくれる高機能歌詞検索ソフト -Lyrics Master-
08/01: フリーでいろんな国のIPアドレスを利用できるFireFoxのVPNアドオン -Hola Unblocker-
07/18: 著作権フリー・無料で利用できるBGMダウンロードサイト - audionautix
07/17: apngをブラウザ上で見るには
06/14: deviantARTなどで入手したテーマに変更するには
06/03: [KissAnime] - 日本語検索可能でいろんなタイトルが見れるアニメ無料視聴サイト
05/30: スマホをギターにして演奏してしまう動画
05/23: InoReader - シンプルで使いやすいRSSリーダー
05/18: [Apowersoft音声録音フリーツール] - PC・マイクから簡単に録音できるフリーツール
05/12: フリーのDNSへ簡単に変更出来るDNSチェンジャー - [ChrisPC DNS Switch]
05/11: C言語 入門 複合文について
05/10: TabsBy.Net - フリーで利用可能なオンラインTABプレーヤー
05/09: [Chrome Extension]Chromeで新しいタブを開いたときにWindows8のメトロ画面にするExtension - New MetroTab
05/06: Bop.fm - フリーでクールなインターフェイスのオンライン音楽プレーヤー
05/05: iAlbums - アルバムごとにカテゴライズされたプレイリスト作成も可能なオンライン音楽プレーヤー
09/20: [B1 Online Archiver] オンライン上で圧縮ファイルを解凍できるサイト
09/15: Operaの旧バージョン(15以前)にXSSの脆弱性が
09/10: ペルセウス座流星群を1分で
08/29: スマホアプリ紹介サイト
RSS feeds

2010年04月30日

C言語 入門 文字列と数値の表示

前回は「改行文字」を勉強しました。
ところで今まで書いたプログラムは全て「文字列」でしたね。
なので今回は数値の表示を主に扱ってみたいと思います。
ちなみに今回はちょっと長いです。


文字列リテラル

さて、まずはちょっと前回を思い出してみようと思います。

""(ダブルクォーテーション)の間に書かれた文字を文字列」といいましたね。

だからprintf関数を使うと
printf("あいうえお¥n");

という風に書きました。ちなみに「¥n」は覚えてますか?「改行文字」でしたね。
この「""で囲んだ文字列」を「文字列リテラル」といいます。名前くらいは覚えておきましょう。

さて、ここで覚えておいて欲しいことは文字や数字を「""で囲んだ場合、必ず文字列として扱われる」ということです。
"1000"

というのはつまり、単なる数字(文字列)として扱われます
このことを覚えておいて次へ進みます。


数字と数

さてちょっと質問です。
「数字」とは何でしょうか?

基本的には数を表す文字(記号)ですよね。
人間が数を見て表現できるようにした文字を表します
逆に言えば数字がないと数を表現できないとも言えるかもしれません。

では「数」とはなんですか??

ちなみに数をコンピュータなどでは「数値」と言うのが一般的です。
さあ、これはちょっと難しいですね。
簡単に言えば数量を表す1つの概念、ですかね。「数の概念」なんて言葉もあります。
正直私も説明に困ってしまいます。

難しいのでこの辺にしておきますが、覚えておいて欲しいのは
数字と数は厳密にいうと違う」ということです。

ではコンピュータの場合はどうでしょう。数(数値)と数字は違うのか??

答えは「違う」です。

先ほど「""で囲んだ場合、必ず文字列として扱われる」といいましたね。
つまりC言語はコンピュータ上で「""で囲まれた数」を数字(文字列)で表現(出力)します。
逆に、単に
1000

と書いた場合は、「数値」として扱われるのです。

そしてここからが大事なんですが、
コンピュータでは数値は計算できるのですが数字は計算できません。文字列としてそのまま表示してしまうからです。
つまり、たとえ数式を""の間に書いたとしてもコンピュータは「式」としては扱わず
式自体を文字列としてそのまま表示してしまう
ということです。

以下のプログラムを書いて実行してみましょう。
#include <stdio.h>

int main(void)
{
    printf("1 + 2 = 3¥n");
    return 0;
}

実行結果
1 + 2 = 3

こんな風に""で囲まれた数字も文字列としてそのまま表示してしまうんですね。

ではコンピュータに数値として扱わせて
計算して表示させるにはどうしたら言いのでしょうか??


変換指定

printf関数で数値を表示するためにはどうしたらいいのか??
""で囲んだ場合、文字列として表示される」わけですから
""で囲まなければいい」ということになりますね。

簡単に言えば
"1000"は数字
1000は数値


です。
でも、""で囲まないと画面に表示はされないんですよね??
ということは単に""で囲むだけでは文字列と認識されて不十分となるわけです。

つまり、数値を表示するには何かを数値と変換させて「数字として読み込ませる」必要があるわけです。

そこで必要になる何かが「出力変換指定子」というやつです。
文字列に書き込み、数値を数字(文字列)へ変換してくださいという命令をしてくれるわけです。
これも色々種類がありますが、整数値を変換してくれる「%d指定子」が有名ですね。

では早速やってみましょう。
適当な数値を画面へ表示してみます。999でやってみます。

#include <stdio.h>

int main(void)
{
    printf("%d¥n", 999);
    return 0;
}

実行結果
999

こんな風に使います。
%d」が先に来て、後で「,(コンマ)」で区切って数値を指定します。

ちなみに「%d」は「整数値」を「10進数」として変換・出力します
まあ、他にもあるということです。2進数や16進数などは後々説明していきます。

ではこれでは芸が無いのでついでに先ほどの「1 + 2」を計算させて答えを表示させてみましょう。
書き方は
#include <stdio.h>

int main(void)
{
    printf("%d¥n", 1 + 2);
    return 0;
}

実行結果
3

こんな風に「,(コンマ)」で区切って同じように式を書きます。計算して表示してくれるというわけです。
とりあえず足し算させてみました。


文字列と組み合わせて使う

%d指定子は文字列と組み合わせて使えます
文字列の中に%d指定子を組み込むと%d指定子だけ数値を変換してくれるんです。

例えば
#include <stdio.h>

int main(void)
{
    printf("1と2を足した和は%dです。¥n", 1 + 2);
    return 0;
}

という風にやってみましょう。
実行結果
1と2を足した和は3です。

こんな風に文字列に組み込むことが出来るんです。
あくまで文字列に組み込むことが出来るということです。


%d指定子の複数使用

最後に%d指定子を複数使用してみましょう
文字列にならどんなところに何度でも使用できます。
例として
#include <stdio.h>

int main(void)
{
    printf("1と2を足した和は%dです。¥n", 1 + 2);
    return 0;
}


1と2にも%d指定子を指定して表示してみましょう

どうするのがいいでしょうか。??
例えば
#include <stdio.h>

int main(void)
{
    printf("%dと", 1);
    printf("%dを足した和は", 2);
    printf("%dです。¥n", 1 + 2);
    return 0;
}

実行結果
1と2を足した和は3です。

なんて分けてやるとprintf関数を3回も使用するので面倒ですよね。
プログラムと結果も少し結びつきづらいですし。

なのでprintf関数は一回だけ使用して書いて見ましょう。
どうやって書くかはとりあえず見てみましょう。
#include <stdio.h>

int main(void)
{
    printf("%dと%dを足した和は%dです。¥n", 1, 2, 1 + 2);
    return 0;
}

実行結果
1と2を足した和は3です。

%dは一回のprintf関数呼び出しでどこに組み込んでも大丈夫ですが
数値の読み込みは「左から右」という文を読む順序で%d1つに対して1つの数値を読み込みます

つまり、「,」で区切ったあと、「, 1, 2, 1 + 2」の順序を「, 2, 1, 1 + 2」に変えてしまうと実行結果も同様に
2と1を足した和は3です。

と変わるということです。これは大事なので覚えておきましょう。


メニューへ戻る
タグ:C言語


↓もしこの記事が役に立ったらクリックお願いします。
人気ブログランキングへ ブログランキング・にほんブログ村へ



posted by Yuichi at 00:37 | Comment(0) | TrackBack(0) | プログラミング>C言語 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック

Copyright (C) 2009-2010 Yuichi All Rights Reserved.