演算子について
2日目のサンプルでは変数だけでなく「演算子」も使いました。この章では、「演算子」に関してさらに詳しく学びましょう。
演算子とは’+’や’-’など演算を行うための記号のことです。
C言語では次のような演算子の種類があります。
演算子名 | 説明 | 例 |
---|---|---|
算術演算子 | 数値の計算を行います | +, -, *, /, % |
代入演算子 | 変数に値を代入します | =, +=, -= |
比較演算子 | 値を比較します | ==, !=, >, < |
論理演算子 | 論理演算を行います | &&, ||, ! |
ビット演算子 | ビット単位の操作を行います | &, |, ^, ~, <<, >> |
この章では、「算術演算子」と「代入演算子」について詳細に説明します。
算術演算子
算術演算子とは加減乗除などの演算を行う記号のことです。
演算子 | 読み方 | 意味 | 使用例 |
---|---|---|---|
+ | プラス | 加算 | a + b |
ー | マイナス | 減算 | a – b |
* | アスタリスク | 乗算 | a * b |
/ | スラッシュ | 除算 | a/b (aをbで割る) |
% | パーセント | 剰余 | a%b (aをbで割った余り) |
nt a = 5;
int b = 2;
int c = a + b;
printf("%d\n",c); //実⾏結果:7
int a = 5;
int b = 2;
int d = a - b;
printf("%d\n",d); //実⾏結果:3
int a = 5;
int b = 2;
int e = a * b;
printf("%d\n",e); //実⾏結果:10
int a = 5;
int b = 2;
int f = a / b;
printf("%d\n",f); //実⾏結果:2
int a = 5;
int b = 2;
int g = a % b;
printf("%d\n",g); //実⾏結果:1
【注意】
%演算子は、整数同士を割る際にのみ使用されるものです。
double型やfloat型を与えるとコンパイル時に以下のようなエラーとなります。
error: invalid operands to binary % (have ‘double’ and ‘double’)
24 | printf(“x%%y=%d¥n”,x%y);
・優先順位
算術演算では、数学での計算と同じように加算と減算(+とー)より乗算と除算(*と/)が優先されます。
int a = 4;
int b = 8;
int c = 4;
printf("a+b/c=%d",a+b/c);
実行結果
a+b/c=6
a+bよりもb/cが先に評価され値は6となります。
aとbを加算する優先順位を設定する場合は、括弧を使用して次のように記述します。
int a = 4;
int b = 8;
int c = 4;
printf("(a+b)/c=%d",(a+b)/c);
実行結果
(a+b)/c=3
代入演算子
変数に値を代入するときに用います。
演算子 | 意味 | 使用例 |
---|---|---|
= | 代入 | a=2 |
+= | 加算して代入 | a += 2; (a = a +2 と等しい) |
-= | 減算して代入 | a -= 2: (a = a -2と等しい) |
*= | 乗算して代入 | a *= 2 (a = a*2 と等しい) |
/= | 除算して代入 | a /= 2 (a = a/2 と等しい) |
%= | 剰余して代入 | a %= 2 (a = a%2 と等しい) |
int x = 10;
printf("x=%d¥n",x); //実⾏結果:10
int x = 10;
x += 5; // xに5を加えてxに代⼊
printf("x+5=%d¥n",x); //実⾏結果:15
int x = 15;
x -= 3; // xから3を引いてxに代⼊
printf("x-3=%d¥n",x); //実⾏結果:12
int x = 12
x *= 2; // xに2を掛けてxに代⼊
printf("x*2=%d¥n",x); //実⾏結果:24
int x = 24
x /= 4; // xを4で割ってxに代⼊
printf("x/4=%d¥n",x); //実⾏結果:6
int x = 6;
x %= 2; // xを2で割った余りをxに代⼊
printf("x%2=%d¥n",x); //実⾏結果:0
また、インクリメント演算子やデクリメント演算子といった演算子も存在します。
演算子 | 読み方 | 意味 | 使用例 | 補足 |
---|---|---|---|---|
++ | インクリメント | 左辺の変数の値を1増やします | 後置:a++; 前置:++a; | a = a + 1と等しい |
ーー | デクリメント | 左辺の変数の値を1減らします | 後置:a–; 前置:–a; | a = a – 1と等しい |
前置きと後置きは、どちらも変数の値を1だけ増減させるという点で同じ機能を持っています。サンプルを以下に示します。
int a = 8;
int b = 8;
a++;
printf("a = %d\n", a);
++b;
printf("b = %d\n", b);
実行結果
a = 9
b = 9
int a = 8;
int b = 8;
a--;
printf("a = %d\n", a);
--b;
printf("b = %d\n", b);
実行結果
a = 7
b = 7
しかし、インクリメント(++)やデクリメント(–)の結果を変数に代入すると、前置きと後置きでは結果が異なります。以下にサンプルを示します。
int a = 8;
int b;
printf("a = %d\n", a);
b = a++;
printf("後置きインクリメントの結果\n");
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("----\n");
a = 8;
printf("a = %d\n", a);
b = ++a;
printf("前置きインクリメントの結果\n");
printf("a = %d\n", a);
printf("b = %d\n", b);
実行結果
a = 8
後置きインクリメントの結果
a = 9
b = 8
----
a = 8
前置きインクリメントの結果
a = 9
b = 9
後置演算子(a++、a–)は、変数に値を代入し、その後、インクリメント(++)またはデクリメント(–)の操作を行っています。これは、以下の手順を踏んでいるのと同じです。
a = 8;
b = a;
a = a + 1;
前置演算(++a、–a)は、先にインクリメント(++)やデクリメント(ーー)の操作後、変数に代入を行っています。これは以下の手順を踏んでいるのと同じです。
a = 8;
a = a + 1;
b = a;
比較演算子、論理演算子については4日目 条件分岐の章で説明します。
ビット演算子は応用編の1日目の章で説明します。
コメント