納得C言語
[第3回]演算子
1.演算子とは
小学生の頃、算数の時間で「+」とか「=」とか学びましたよね。まさにそれが今から学習する演算子と呼ばれるものなんです。プログラムの世界では演算子は主に"代入演算子"と"算術演算子"の2種類の演算子があります(他にも細かい分類があるけど、混乱するのでここでは省略します!)。「......!(゚д゚;)」
代入演算子
代入演算子は左辺の「定数」や「変数」を右辺の変数に代入するという意味で、演算子は「=」で表します。普通の計算式みたいに「a = 3」は「aは3である」と言う意味ではなく「3をaに代入する」という意味になります。
算術演算子
算術演算子は変数や定数を計算するときに使われ、「+」は加算、「-」は減算、「*」は乗算、「/」は除算(÷じゃないので注意!)、「%」は剰余算(除算の余り)で表します。
2.演算子の使い方
各演算子の使用例を表したプログラムは例題1のようになります。
実際に例題1を書いてみて、どのように表示されるか試してみましょう!
例題1 各演算子の使い方
#include <stdio.h> //おまじない int main() { //変数(int型)の宣言 int i, j, s; //変数の初期化 i = 6; j = 3; s = i + j; printf("%d", s); printf("\n"); s = i - j; printf("%d", s); printf("\n"); s = i * j; printf("%d", s); printf("\n"); s = i / j; printf("%d", s); printf("\n"); i = 13; j = 5; s = i % j; printf("%d", s); printf("\n"); return 0; }
結果
上からそれぞれ「加算」「減算」「乗算」「除算」「剰余算」を行っています。
このようになったかな?
演算子の種類
基本的に演算子はこんな感じで使います。算術演算子の詳しい説明は、表の通りになっています。
演算 | 演算子 | 例 | 意味 |
---|---|---|---|
加算 | + | a + b | aとbを足す |
減算 | - | a - b | aとbを引く |
乗算 | * | a * b | aとbを掛ける |
除算 | / | a / b | aとbを割る |
剰余算 | % | a % b | aをbで割った余り |
例題1のプログラムでは、整数型の変数i,j,sを宣言しています。変数i,jには6,3の初期値を与え、それぞれの値に対して加算・減算・乗算・除算・剰余算を行います。変数sには求めた値の答えを代入して結果を出力します。剰余算は余りが出るように変数i,jの値を13,5に変更しています。
優先順位
例題1は2つの数と1つの算術演算子を使った計算でしたが、計算式にはa * b + cのような2つ以上の数と1つ以上の算術演算子を使った計算があります。この様な時はどのような順序で計算されるでしょうか?
これらを計算するときは普通の計算と全く変わらず、優先順位というものが存在します。
A「計算式の優先順位も普通の計算と同じように使われるんだ」
B「+と*だったら*の方が先に計算されるんだね」
A「そう、( )も使えて、加減算を先に計算したいときとかは( )でくくると先に計算されるよ」
B「なるほど...」
A「(a + b) * cではa + bを先に計算してcをかけて、a + b * cではb * cを先に計算してaを足しているね」
2人の会話通り、優先順位は乗算・除算・剰余算から先に計算を行ってから加算・減算をします。括弧がついている計算式は普通の計算と同じように括弧の中から先に計算します。例題2のプログラムを書いてみて、優先順位の違いを試してみましょう。
例題2 優先順位の違い
#include <stdio.h> int main() { //変数 (int型)の宣言 int a, b, c, s; //変数の初期化 a = 3; b = 7; c = 2; s = 0; //a+bを先に計算してcをかける s = (a + b) * c; printf("%d",s); printf("\n"); //改行 b*cを先に計算してaを足す s = a + b * c; printf("%d",s); printf("\n"); //改行 return 0; }
結果
同じ計算式ですが、a + bに( )を付けることによって違う結果が出てきましたね。この先、複雑な計算を行っていく際に優先順位を間違って計算してしまうと、思っていた計算結果と違って戸惑うことがあるかと思います。計算式を書くときには、優先順位をしっかりと考えましょう。
3.練習問題
(1) a = 135, b = 120とし、それぞれの数値について加算・減算・乗算・除算・剰余算の結果を出力するプログラムを作成してください
(2) 同じく、a = 12.3, b = 23.5とし、それぞれの数値について加算・減算・乗算・除算の結果を出力するプログラムを作成してください。
(1)解答
解答プログラム
#include <stdio.h> //おまじない int main() { int a, b, s; //変数の初期化 a = 120; b = 135; s = 0; s = a + b; //加算 printf("%d",s); printf("\n"); s = a - b; //減算 printf("%d",s); printf("\n"); s = a * b; //乗算 printf("%d",s); printf("\n"); s = a / b; //除算 printf("%d",s); printf("\n"); s = a % b; //剰余算 printf("%d",s); printf("\n"); return 0; }
結果
変数に整数を代入するから、整数型のintでの宣言を行います。
(2)解答
解答プログラム
#include <stdio.h> //おまじない int main() { double a, b, s; //変数の初期化 a = 12.3; b = 23.5; s = 0; s = a + b; //加算 printf("%f",s); printf("\n"); s = a - b; //減算 printf("%f",s); printf("\n"); s = a * b; //乗算 printf("%f",s); printf("\n"); s = a / b; //除算 printf("%f",s); printf("\n"); return 0; }
結果
変数に小数点を代入するから、浮動小数点型のfloatもしくはdoubleでの宣言を行います。
また、小数点はもともと割り切れていない数値なので、剰余算はできません。
コメントの投稿
トラックバックURL
http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1089