演算子

概要

代入の「=」や計算に使用する「+」や「-」などの記号のことを演算子といいます。

代入演算子とは

右辺の値や計算結果を左辺に代入する演算子のことを代入演算子といいます。
C_0032

計算演算子

計算で使用している演算子のことを計算演算子といいます。

C_0008

下の表のように代入演算子「=」を使用した際に右辺の先頭が左辺の変数と同じ場合は
計算演算子と合わせて使用可能です。

C_0009

インクリメント、デクリメント演算子

インクリメント、デクリメント演算子は数値系の型(intなど)の変数の値を
1だけ加算、減算する演算子です。
1加算する演算子をインクリメント演算子、
1減算する演算子をデクリメント演算子といいます。

C_0010

・a++と++a の違い

演算子を前につける前置という書式と後ろにつける後置という書式があります。 どちらも1を加算、減算することは同じですが計算の方法が異なり、 使い方によっては結果が変わります。

前置

int a = 0; int b = 10; a = ++b; printf("a = %d, b = %d\n", a, b); 実行結果: a = 11, b = 11

後置

int a = 0; int b = 10; a = b++; printf("a = %d, b = %d\n", a, b); 実行結果 a = 10, b = 11 計算の結果は前置の場合はa、bともに11、後置の場合はaが10、bが11となり、 結果に差異が出ます。 次は前置と後置で行われている計算の分解して流れを書きます。

前置

int a = 0; int b = 10; b = b + 1; a = b; printf("a = %d, b = %d\n", a, b); 実行結果 a = 11, b = 11

後置

int a = 0; int b = 10; a = b; b = b + 1; printf("a = %d, b = %d\n", a, b); 実行結果 a = 10, b = 11 前置では「a」に代入する前に「b」の加算処理を行っているのに対して 後置では「a」に「b」を代入した後で「b」の加算処理を行っています。 bに1が加算されるという点では同じですが計算方法は 異なっているので注意してください。

比較演算子

比較演算子とは変数などの数値を比較したいときに使用する演算子です。
比較演算子を使用した式を条件式といい、
結果は真(true)偽(false)のどちらかになります。
C言語での真偽値は真は1または0以外の値、偽は0で表すことができます。
C_0011

論理演算子

論理演算とは複数の条件を組み合わせて複雑な条件を表す際に使用する演算子です。
C_0012
条件AとBの論理演算子の働きを以下の図で表します。
C_0013

三項演算子

三項演算子とは3つの項目を使用する演算子です。

書式

書式例

条件式 ? 式1 : 式2;

具体例:

int time = 40; int score = 1000; int bonus = 200; score += time >= 30 ? bonus : 0; // timeが30以上ならbonusの値を加算 三項演算子は条件式の結果が真ならば式1の値を偽なら式2の値を返します。 具体例をもとに説明すると条件式は「time >= 30」、 式1は「bonus」、式2は「0」となります。 timeは40なので条件式(40 >= 30)の結果は真と判断され、式1のbonusが返されます。 この結果scoreの1000にbonusの200が加算されますので 三項演算子終了時のscoreは1200になります。