前節では、100+200=300 と言う式を画面に表示させましたが、
しかし、これでは、コンピュータを使っている意味がありません。
この様な計算はコンピュータにやらせるべきでしょう。
C言語では、計算するには数式を記述するだけで済みます。
次のプログラムは、100+200 の計算をコンピュータにやらせる例です。
このプログラムの実行結果は、次の通りになります。int main(void) { 100+200; }
画面には、何の結果も表示されていません。
では、計算した結果を表示するにはどうするのでしょうか?
[ コンピュータは頑固で素直 ]
この様に、コンピュータは頑固であり素直でもあります。
要するに、与えられた命令は全てその通りに素直に実行しますが、
それ以外のことは一切やってくれないという頑固さも持っています。
人間からすれば、計算したら結果を表示するのが当然ですが、
コンピュータにはそんな気配りは全くありません。
実は、数式を渡して、数式の計算結果を数字に変換することも可能です。
次のプログラムは、100+200 を計算させて表示する例です。
このプログラムの実行結果は、次の通りになります。#include <stdio.h> int main(void) { printf("%d\n",100+200); return 0; }
このプログラムで注意してほしいのは、printf関数に渡されるのは、
300
前項では、加算(足し算)を行いましたが、もちろん他の計算も可能です。
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×3 と計算してみて下さい。
筆者が所持している高級電卓では、10 と表示されましたが、
100円ショップの電卓では 9.9999999 と表示されました。
高級電卓では、途中の計算を追跡して正確に表示するそうです。
C言語で計算出来るのは、何も単純な式だけではありません。
このプログラムの実行結果は、次の通りになります。#include <stdio.h> int main(void) { printf("%d\n",(1 + 100) * 100 / 2); return 0; }
C言語でも、数式での優先順位は、数学と同じです。
5050