C言語 ~3日目~

演算子について

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日目の章で説明します。

コメント

この記事へのコメントはありません。

関連記事

C言語のメリット

C言語 ~6日目~

C言語でフレーム可変データセット 前編

PAGE TOP