C/C++ Programing 〜第二章〜

第二章C言語を用いて計算をさせてみます。

計算機

コンピュータというのはもともと計算機でした。ということでここではC言語によって簡単な計算をするプログラムを作ってみたいと思います。
ただ、私たちが普段使っている記号とちょっと違うものを使ったりするのでそこは注意ですね。

具体例としては×の代わりに*、÷の代わりに/を使います(注意:本来なら半角英字なので全角で打たないで下さいね(笑))
演算の優先度は変わりません。もちろん()で括ることも出来ます。(注:{ } や [ ] は別の用途で使われるため、数学のようには使えません)

(1 + 1000) * 1000 / 2

こんな感じですね。 ( と )はそれぞれ一番近い相手と対応します。
さて、問題は表示させることですが…

printf ("(1 + 1000) * 1000 / 2\n");

前回 hello, world! と表示させるプログラムを作りました。
それと同じように考えるなら上のようになりますが、さて、うまくいくでしょうか。

#include <stdio.h>

main () { printf ("(1 + 1000) * 1000 / 2\n");
}

実はこれだと文字通りに表示するだけです。

(1 + 1000) * 1000 / 2

これではどうしようもないですね。では、どうすればいいのでしょうか。

文字と数字

実は上の例では、(1 + 1000) * 1000 / 2 を文字として出力していたのです。
これを数字データとして扱わないと、計算してくれません。
printfというのは画面に文字や数字を表示するための「関数」というもので(詳しく書くと「標準出力に出力する」となりますが)、
表示するデータをそのまま文字列として扱えばいいのか数字として扱うのか、こちらから指示しないといけません。

printf ("%d\n", (1 + 1000) * 1000 / 2);

%dという新しい書き方が出てきました。
これはデータを10進数として扱うという指示です。そして、「式」として扱うことでは計算結果が代わりに表示されます。

500500

これで計算機として使うことが出来るようになりました。

pintfの仕様

10進数は%dでしたが、他にどんな書式(フォーマット)があるのでしょうか。

%c 一つの文字を表示 A
%s 文字列を表示 hello,world!
%d 10進数の整数表示 1995
%i 8進数の整数表示 771
%x 16進数の整数表示 1fff
%e 指数表示の実数表示 1.234e+012

#include <stdio.h>
main ()
{
printf ("%c\n", 'A');
printf ("%s\n", "hello, world!");
printf ("%d\n", 2003);
printf ("%i\n", 2003);
printf ("%x\n", 2003);
printf ("%e\n", 2003e+200);
}

これ
もちろんもっといろいろありますし、実は頭に0をつけて桁をそろえる方法などもあるのですが割愛します。

A
hello, world!
2003
2003
7d3
2.003000e+203

さて、これまでC言語の細かい仕様などにはこだわらずとりあえず動かしてみようといった感じで進めてきましたが、
次回からは変数や関数といったC言語の構造など細かいところに入っていきます。