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

基本的な計算

計算とその結果の表示
前節では、100+200=300 と言う式を画面に表示させましたが、
あの時は、100,200,300 と言う数値を直接並べました。
つまり 300 と言う答えの部分は、人間が先に計算していたのです。

しかし、これでは、コンピュータを使っている意味がありません。
この様な計算はコンピュータにやらせるべきでしょう。

C言語では、計算するには数式を記述するだけで済みます。
次のプログラムは、100+200 の計算をコンピュータにやらせる例です。

ソースコード
int main(void)
{
    100 + 200;
}

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

実行結果

画面には、何の結果も表示されていません。
これは当然で、先ほどのプログラムは、100+200 を計算しろとしか書かれておらず、
計算した結果を表示しろ、とは一切書かれていないからです。

コンピュータは頑固で素直
この様に、コンピュータは頑固であり素直でもあります。
要するに、与えられた命令はすべてその通りに素直に実行しますが、
それ以外のことは一切やってくれないという頑固さも持っています。

人間からすれば、計算したら結果を表示するのが当然ですが、
コンピュータにはそんな気配りはまったくありません。

では、計算した結果を表示するにはどうするのでしょうか?
もちろん、画面への表示にはprintf関数を使用します。
printf関数で文字を表示したり、数値を数字に変換して表示する方法は知っています。

実は、数式を渡して、数式の計算結果を数字に変換することも可能です。
次のプログラムは、100+200 を計算させて表示する例です。

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

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

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

実行結果
300

このプログラムで注目すべきところは、printf関数に渡されるのは、
100+200 と言う式ではなく、その結果である 300 であると言う点です。
100+200 の部分は(printf関数に関係なく)勝手に計算され、300 に変換されます。
そして、その 300 がさらに数字に変換され、画面に 300 と表示されたのです。
四則演算子
前項では、加算(足し算)を行いましたが、もちろん他の計算も可能です。
C言語の基本的な演算子は、次の表の通りです。

C言語での記号 数学での記号 機能
+ + 加算(足し算)
- - 減算(引き算)
* × 乗算(掛け算)
/ ÷ 除算(割り算)
% 剰余算(割り算の余り)

この表を見ると、数学とは異なる記号を使うことがあることに気づくと思います。
一般的なコンピュータのキーボードで表現できる記号には×や÷はないため、
C言語に限らず、多くのプログラミング言語では、数学とは別の記号が使われています。

演算子の使い方は数学とまったく同じです。
次のプログラムは、ここで紹介した演算子をひととおり使ってみる例です。

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

int main(void)
{
    printf("%d\n", 10 + 3);
    printf("%d\n", 10 - 3);
    printf("%d\n", 10 * 3);
    printf("%d\n", 10 / 3);
    printf("%d\n", 10 % 3);
    return 0;
}

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

実行結果
13
7
30
3
1

このプログラムで注目してほしい部分は、
10/3(10÷3)の計算結果が 3 と表示されていることです。
電卓なら、3.3333333 と表示されるのが普通ですが、
ここではどの数値も整数として計算しているので、結果も整数になります。

なお、整数計算の結果は四捨五入ではなく切り捨てとなります。
なぜなら、四捨五入を行うと、商×割る数、の逆計算を行ったときに、
その結果が、元の割られる数よりも大きいという矛盾が生じるためです。

安物電卓と高級電卓
実は、この計算は、安物電卓と高級電卓を区別する手軽な方法です。
皆さんもお手持ちの電卓で 10÷3×3 と計算してみてください。
筆者が所持している高級電卓では、10 と表示されましたが、
100円ショップの電卓では 9.9999999 と表示されました。
高級電卓では、誤差をなるべく少なくする計算方法が採用されています。

複雑な式
C言語で計算できるのは、単純な式だけではありません。
もっと複雑な式であっても、問題なく計算できます。
次のプログラムは、1~100までの合計を公式で計算する例です。

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

int main(void)
{
    printf("%d\n", (1 + 100) * 100 / 2);
    return 0;
}

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

実行結果
5050

C言語でも、数式での優先順位は、数学と同じです。
乗算や除算は、加算や減算よりも先に計算されます。
優先順位を変えたい時には、() をつけるのも、数学とまったく同じです。

ただし、数学では、2重の () には {} を使いますが、C言語では違います。
C言語では、何重の () であっても、() の記号を使用します。


本サイトについて

苦しんで覚える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

💬 コメント投稿欄を開く