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