四則演算基礎および数値の表示
はい、では四則演算と数値の表示を始めましょう。
まず全部のソースを載せます。
#include <stdio.h>
int main(){
int a,b;
a = 5;
b = 2;
int add = a + b;
int sub = a - b;
int mul = a * b;
int div = a / b;
printf("a+b=%d:a-b=%d:a*b=%d:a/b=%d\n",add,sub,mul,div);
return 0;
}
-------------
#include <stdio.h>って何? と思ったあなたは鋭いです。
このstdio.hにprintf()関数が定義されていてこれを宣言することで入出力をするよ! という宣言です。
まずは
int a,b;
ですね。intはIntegerの略で整数がこのaとbに入るよ! と宣言しています。
Pythonというプログラミング言語みたいに整数を入れると整数型の変数になる手軽なプログラミング言語もありますが、Cはまず何を入れるか宣言しないといけません。
面倒に感じるかもしれませんがこれによって整数に文字列を入れるみたいなバグのもとを減らすことができます。
これは一長一短なのですが、ことOSを読むなら型がしっかりしている必要があります。
次の二行
a = 5;
b = 2;
これはaに5、bに2を入れています。=が等しいという意味ではないことに注意してください。
余談ですが等しいかどうかの比較は「==」と=を二個使います。
このあとの三行については読んだままですね。
addにaとbを足したものを、subにaからbを引いたものを、mulはaにbをかけたものを入れています。
型の宣言と代入は同時に行えることに注意してください。
a / bについては少々注意が必要です。ここでdivには2が入ります。
Cでは除算は小数点を切り捨てられます、忘れると後になって出てくる厄介なバグにもなるので注意してください。
では演算結果を表示しましょう。
printf("a+b=%d:a-b=%d:a*b=%d:a/b=%d\n",add,sub,mul,div);
気になるのは%dですね。
これは後に続く引数を整数で表示するものです、フォーマット文字列といいます。
注意として文字列を表示するときは%sという文字列表示用の記号を使ってください。
実は
char str[] = "hello";
printf(str);
でもhelloとは表示されますが、もし表示用文字列に%dが含まれていると……
char str[] = "hel%dlo";
printf(str);
機種によりますがこれはバグになります。
hel-462769504lo
%dの部分がおかしくなって出力されます。
文字列が多少おかしくなるくらいなら語弊はありますがそれほど問題ではないですが、悪意を持って文字列にフォーマット文字列を入れると権限昇格や任意のコード実行等のセキュリティホールを作り込んでしまうので注意してください。
ちょっと短いのでreturn 0;の説明もしておきましょう。
これは0を返しているのですが自作関数等であれば戻り地(そう呼びます)で演算結果や関数が成功したかなどを受け取りますがmain()は誰が受け取るのでしょうか?
答えはシステムです。
return 0;
0はプログラムが正常に終了したことを示します。
先頭のint main()のmain()の前についているintは整数を返す関数です、という意味です。
以上が四則演算となります、次回は方の種類と大きさについてを書こうと予定しています。