マクロの概要(入門用) 演算子について(Ver8.10対応版)
演算子について
すでに「変数について」で「+」記号で変数同士を連結(加算)する例を出しましたが、マクロでは -(減算) *(乗算)なども使えます。
こういう方法を「演算」と呼びます。
演算の代表的なものは、 +(加算) -(減算) *(乗算) /(除算) %(剰余) で、これらは 「四則演算」といわれています。
※剰余とは余りを求める演算子です。
#value = 8 % 3;    //変数「#value」の値(あまり)は「2」となります
+ - * / % などの記号を「演算子」といいます。

四則演算の+ - * / % 以外にも演算子には次のようなものがあります。
<= >= < > != == && || ! | & ^
それぞれの役割を説明していきます。

比較演算
<=(以上)   >=(以下)   <(大きい)   >(小さい)   !=(等しくない)   ==(等しい)

記号の意味は、数学で使用する不等号と同じです。
ただし、数学のイコールは「=」記号で「等しい」を表しますが、マクロでの「=」は「=」が1つだけなら「代入」を意味しています。

「 < 」は、左辺は右辺より「小さい(未満)」となります。
3 < 4 この場合は「真」(0以外)になります。
3 < 2 この場合は「偽」(0)になります。
正しい・正しくないの評価をマクロでは「真」と「偽」という言葉を使い、その結果を「0」か「0以外」で表します。「偽」の場合は確実に0になります。 真の場合は0以外の数字、ほとんどの場合は「1」ですが、「0」か「0以外」でマクロは判断しています。

「 <= 」は、左辺は右辺より「小さい(未満)かまたは等しい」となります。
3 <= 4 この場合は「真」(0以外)になります。
3 <= 3 この場合は「真」(0以外)になります。
3 <= 2 この場合は「偽」(0)になります
「 != 」は左辺と右辺が「等しくない」となります。
3 != 4 この場合は「真」(0以外)になります。
3 != 3 この場合は「偽」(0)になります。
「 == 」は左辺と右辺が「等しい」となります。
3 == 3 この場合は「真」(0以外)になります。
3 == 4 この場合は「偽」(0)になります。
四則演算の場合は、式によって答えが求められ、結果はそれぞれに違います。
しかし、この「比較演算」や続いて説明する「論理演算」は、正しい(真)か正しくない(偽)の二通りの答えしかありません。
右辺と左辺を比較した時に、
正しい(真)ならば、式の答えは、0以外の数値になります。
逆に正しくない(偽)ならば、式の答えは、0になります。
ただ「0以外」か「0」の計算をさせるためだけに「比較演算」「論理演算」があるのではありません。どういう風に使うのかは、後述するマクロの処理の流れを制御するif文・while文で説明していきます。 「比較演算」「論理演算」は、if文・while文で使用される重要な演算方法だと覚えておいてください。


論理演算
&&(AND)   ||(OR)   !(NOT)   |(ビットごとのOR)   &(ビットごとのAND)   ^(ビットごとのXOR)

論理演算も比較演算と同様に、正しい(真)か正しくない(偽)の二通りの答えしかありません。
右辺と左辺を比較した時に、
正しい(真)ならば、式の答えは、0以外の数値になります。
逆に正しくない(偽)ならば、式の答えは、0になります。

論理演算子の個別の意味は以下の通りです。

「 && 」(AND)は左辺も右辺も真の場合だけ「真」になります。それ以外の組み合わせは全て「偽」です。
左辺 右辺 &&の結果
「偽」 「偽」 「偽」
「偽」 「真」 「偽」
「真」 「偽」 「偽」
「真」 「真」 「真」
(3 <= 4) && (3 <= 3)

//左辺の比較演算子の結果は「真」、右辺の比較演算子の結果も「真」、
//よって左辺 AND 右辺の結果は「真」になります。

(3 <= 4) && (3 <= 2)

//左辺の比較演算子の結果は「真」、右辺の比較演算子の結果は「偽」、
//よって左辺 AND 右辺の結果は「偽」になります。

「 || 」(OR)は左辺と右辺が真、または左辺もしくは右辺のどちらかが真の場合に「真」になります。左辺と右辺がどちらも偽の場合だけ「偽」になります。
左辺 右辺 ||の結果
「偽」 「偽」 「偽」
「偽」 「真」 「真」
「真」 「偽」 「真」
「真」 「真」 「真」
(3 <= 3) || (3 <= 2)

//左辺の比較演算子の結果は「真」、右辺の比較演算子の結果は「偽」、
//よって左辺 OR 右辺の結果は「真」になります。

(3 <= 2) || (3 <= 2)

//左辺の比較演算子の結果は「偽」、右辺の比較演算子の結果も「偽」、
//よって左辺 OR 右辺の結果は「偽」になります。
「 ! 」(NOT)は論理演算の結果を反転します。論理演算の結果が真ならば「偽」になり、偽ならば「真」になります。
!(3 <= 2)

//比較演算子の結果は「偽」だがNOTで反転され「真」になります

!(3 <= 4)

//比較演算子の結果は「真」だがNOTで反転され「偽」になります


|(ビットごとのOR)   &(ビットごとのAND)   ^(ビットごとのXOR) は変数などを2進数に変換した時にビット(0または1)に着目した論理演算を実行するためのものです。ここでは詳しくは触れません。 このような記号は論理演算子であることだけを覚えてください。※XORは「排他的論理和」といい、2つのビット列の対応を調べるときに使います。


優先順位
演算子には優先順位があります。
高い <---------> 低い

* + <= &&
/ - >= ||
%   < !
|   >  
&   !=  
^   ==  

優先順位を上げる場合は括弧で囲みます。
#value = 10 + 5 * 2;        //変数「#value」は20になります
#value = ( 10 + 5 ) * 2;    //変数「#value」は30になります


戻る 目次 次へ

戻る