演算子表
第2版の流用ですが、気にせずに(^_^;)
使っていたら覚えます。丸暗記はしなくていいと思います。
| 演算子 | 演算方法 | 役割・注意事項 | 使用例や解説(ここで出てくるアルファベットは特に断りが無い限り、それぞれint型の変数とします。) | |||||||||||||||
| = | 代入演算 二項演算  | 
右辺にある値を左辺に代入します。 数学で使用する=とは意味が違うので注意して下さい。 (右の※の式を見て下さい。) 左辺には変数を持ってきましょう。  | 
x = 2; x = 2 + 3; //xに5を代入します。 ※ x = x + 2; //xの元々の値に2を足した値をxに代入します。  | 
    |||||||||||||||
| + | 算術演算 二項演算  | 
+記号の左右の値を足します。 | x = 2 + 3; | |||||||||||||||
| - | 算術演算 単項演算  | 
値の符号を逆にします。 | x = -2; | |||||||||||||||
| - | 算術演算 二項演算  | 
-記号の左の項から右の項を引きます。 | x = 5 - 2; | |||||||||||||||
| * | 算術演算 二項演算  | 
*記号の左右の値を掛けます。 | x = 5 * 2; | |||||||||||||||
| / | 算術演算 二項演算  | 
/記号の左の項を右の項で割ります。 また、ZDOOMで扱う値は整数なので、結果の値が小数の場合でも、切り捨てをした整数の値が計算の結果になります。 ちなみに、0でわるとエラーが発生します。  | 
x = 4 / 2; x = 3 / 2; //結果は1.5を切り捨てた値の1です。  | 
    |||||||||||||||
| % | 算術演算 二項演算  | 
%記号の左の項を右の項で割ったときのあまりを計算します。 ちなみに、0でわるとエラーが発生します。  | 
x = 12 % 5; //結果は2になります。  | 
    |||||||||||||||
| & | ビット演算 二項演算  | 
ビット演算の演算子です。AND式(ビット論理積)を行います。 両方のbitが1であるときは1を返し、それ以外の場合は、0を返します。 書き方: x = a & b; など  | 
a、bは1bitの情報量(0か1)の変数とします。
 また、 x = 14 & 7; のとき 14は2進数で 1110 7は2進数で 0111 よって各位でAND式をかけると 14 & 7 = 0110 (右辺は2進数) となり、0110(2進数) = 6(10進数)となるので、 xの値は6となります。 (ZDOOMで扱う整数はは32bitですが、今回は残り28bit部分は何も影響しないので省いています)  | 
    |||||||||||||||
| | | ビット演算 二項演算  | 
ビット演算の演算子です。OR式(ビット論理和)を行います。 両方のbitのうち少なくとも片方が1であるときは1を返し、それ以外の場合は0を返します。 書き方: x = a | b; など  | 
a、bは1bitの情報量(0か1)の変数とします。
 また、 x = 12 | 5; のとき 12は2進数で 1100 5は2進数で 0101 よって各位でOR式をかけると 12 | 5 = 1101 (右辺は2進数) となり、1101(2進数) = 13(10進数)となるので、 xの値は13となります。 (ZDOOMで扱う整数はは32bitですが、今回は残り28bit部分は何も影響しないので省いています)  | 
    |||||||||||||||
| ^ | ビット演算 二項演算  | 
ビット演算の演算子です。XOR式(ExclusiveOR、ビット排他的論理和)を行います。 両方のbitのうちどちらか片方が1であるときは1を返し、それ以外の場合(どちらとも1または0のとき)は0を返します。 書き方: x = a ^ b; など  | 
a、bは1bitの情報量(0か1)の変数とします。
 また、 x = 9 ^ 10; のとき 9は2進数で 1001 10は2進数で 1010 よって各位でXOR式をかけると 9 ^ 10 = 0011 (右辺は2進数) となり、0011(2進数) = 3(10進数)となるので、 xの値は3となります。 (ZDOOMで扱う整数はは32bitですが、今回は残り28bit部分は何も影響しないので省いています)  | 
    |||||||||||||||
| ~ | ビット演算 単項演算  | 
ビット演算の演算子です。NOT式(ビット否定)を行います。 整数を2進数に戻し、各bitでNOT式をかけます。 ある位が0のときは1にし、1のときは逆に0にします。 書き方: x = ~a; など  | 
x = 
~5; のとき ZDOOMでは整数を32bitの情報量で表すので 5は2進数で 00000000000000000000000000000101 各位について0と1を逆にするので ~5は2進数で 11111111111111111111111111111010 となります。 これを10進数で表すと -6となります。 よって xの値は-6になります。  | 
    |||||||||||||||
| << | ビット演算 二項演算  | 
ビット演算の演算子です。<<記号の左の項を2進数に直して、<<記号の右の項の値の分だけ左の項の値を左へ移動させます。 書き方: x = a << 2; など  | 
今回は整数が4ビットの情報量しかないとします。 x = 2 << 1; のとき 2は2進数で 0010 これを左へ1個分移動させるので 2 << 1は2進数で 0100 となります。 これを10進数で表すと 4となります。 よって xの値は4になります。 また、 x = -7 << 1; のとき、 -7は2進数で 1001 となります。 これを左へ1シフトすると -7 << 1は2進数で 0010 となり、 xは2になります。 つまり、変数の一番左のビット部分の値が何であれ情報は消えてしまい、右から新しくやってくるビット部分は0になります。 ちなみに、 a << b は a * 2^b と同じ意味になります。(ただし、aの一番左のビット部分が0で、そこに何も影響が無い場合に限ります。)  | 
    |||||||||||||||
| >> | ビット演算 二項演算  | 
ビット演算の演算子です。>>記号の左の項を2進数に直して、>>記号の右の項の値の分だけ左の項の値を右へ移動させます。 書き方: x = a >> 3; など  | 
今回は整数が4ビットの情報量しかないとします。 x = 2 >> 1; のとき 2は2進数で 0010 これを右へ1個分移動させるので 2 >> 1は2進数で 0001 となります。 これを10進数で表すと 1となります。 よって xの値は1になります。 また、 x = 1 >> 1; のとき、 1は2進数で 0001 となります。 これを右へ1シフトすると 1 >> 1は2進数で 0000 となり、 xは0になります。 つまり、変数の一番右のビット部分の値が何であれ情報は消えてしまい、左から新しくやってくるビット部分は0になります。 ちなみに、 a >> b は a / 2^b(小数点以下切り捨て) と同じ意味になります。(ただし、aの一番左のビット部分が0の場合に限ります。)  | 
    |||||||||||||||
| == | 関係演算 二項演算  | 
==記号の左右の値が同じ場合、1(TRUE)を返します。 ==記号の左右の値が違う場合、0(FALSE)を返します。 書き方: bool x = a == b; など  | 
bool a = 3 == 3; //この場合、値が等しいので、変数aには1が代入されます。 他にも if(health == 100){ //内容 } など、条件として使用することもできます。  | 
    |||||||||||||||
| != | 関係演算 二項演算  | 
!=記号の左右の値が違う場合、1(TRUE)を返します。 !=記号の左右の値が同じ場合、0(FALSE)を返します。 書き方: bool x = a != b; など  | 
bool a = 3 != 3; //この場合、値が等しいので、変数aには0が代入されます。 他にも if(monsters != 0){ //内容 } など、条件として使用することもできます。  | 
    |||||||||||||||
| > | 関係演算 二項演算  | 
a > 
b のとき、aがbより大きければ1(TRUE)を返します。 aがbより小さいまたは等しければ0(FALSE)を返します。 書き方: bool x = a > b; など  | 
bool a = 4 > 
3; //この場合、4は3より大きいので、変数aには1が代入されます。 他にも while(monsters > 0){ //内容 } など、条件として使用することもできます。  | 
    |||||||||||||||
| >= | 関係演算 二項演算  | 
a >= 
b のとき、aがbより大きいまたは等しければ1(TRUE)を返します。 aがbより小さければ0(FALSE)を返します。 書き方: bool x = a >= b; など  | 
bool a = 3 >= 
5; //この場合、3は5より小さいので、変数aには0が代入されます。 他にも if(ammo >= 50){ //内容 } など、条件として使用することもできます。  | 
    |||||||||||||||
| < | 関係演算 二項演算  | 
a < 
b のとき、aがbより小さければ1(TRUE)を返します。 aがbより大きいまたは等しければ0(FALSE)を返します。 書き方: bool x = a < b; など  | 
bool a = 4 < 3; //この場合、4は3より大きいので、変数aには0が代入されます。 他にも while(x < 10){ //内容 } など、条件として使用することもできます。  | 
    |||||||||||||||
| <= | 関係演算 二項演算  | 
a <= 
b のとき、aがbより小さいまたは等しければ1(TRUE)を返します。 aがbより大きければ0(FALSE)を返します。 書き方: bool x = a <= b; など  | 
bool a = 5 >= 5; //この場合、値が等しいので、変数aには0が代入されます。 他にも if(armor <= 50){ //内容 } など、条件として使用することもできます。  | 
    |||||||||||||||
| && | 論理演算 二項演算  | 
論理演算の演算子です。AND式(論理積)を行います。 両方の事柄が真(TRUE)ならば1を、それ以外の場合は0を返します。 また、"事柄"に、演算子を使った式を持ってくることができ、そのときはそちらの計算が優先されます。 日本語で言うと、"かつ"を意味しています。 書き方: bool x = a == 1 && b != 1; //aが1かつbが1でないなら1を返します。 など  | 
 の場合は 3→真 0→偽 なので0となります。 また、 a == 1&& b != 1&& c == 5 などと複数つなげても使用できます。 条件を指定するときなどに便利です。  | 
    |||||||||||||||
| || | 論理演算 二項演算  | 
論理演算の演算子です。OR式(論理和)を行います。 両方の事柄のうち、どちらか少なくとも1つが真(TRUE)ならば1を、それ以外の場合は0を返します。 また、"事柄"に、演算子を使った式を持ってくることができ、そのときはそちらの計算が優先されます。 日本語で言うと、"または"を意味しています。 書き方: bool x = a == 1 || b != 1; //aが1またはbが1でないなら1を返します。 など  | 
 の場合は 3→真 0→偽 なので1となります。 また、 a == 1|| b != 1|| c == 5 などと複数つなげても使用できます。 条件を指定するときなどに便利です。  | 
    |||||||||||||||
| ! | 論理演算 単項演算  | 
論理演算の演算子です。NOT式(否定)を行います。 !記号の右にある事柄が真(TRUE)なら0を、偽(FALSE)なら1を返します。 また、"事柄"に、演算子を使った式を持ってくることができ、そのときはそちらの計算が優先されます。 書き方: bool = !(a == 1); など  | 
 !!3 とすると、 !3 で0になるので !!3 は、 !0 となり、結果は 1 となります。  | 
    |||||||||||||||
| += | 算術代入演算 二項演算  | 
x += 2; とすると、 x = x + 2; と等しいです。  | 
x += 2; //xの元の値に2を足した値をxに代入します。  | 
    |||||||||||||||
| -= | 算術代入演算 二項演算  | 
x -= 2; とすると、 x = x - 2; と等しいです。  | 
x -= 2; //xの元の値から2を引いた値をxに代入します。  | 
    |||||||||||||||
| *= | 算術代入演算 二項演算  | 
x *= 2; とすると、 x = x * 2; と等しいです。  | 
x *= 2; //xの元の値に2を掛けた値をxに代入します。  | 
    |||||||||||||||
| /= | 算術代入演算 二項演算  | 
x /= 2; とすると、 x = x / 2; と等しいです。  | 
x /= 2; //xの元の値を2で割った値をxに代入します。  | 
    |||||||||||||||
| %= | 算術代入演算 二項演算  | 
x %= 2; とすると、 x = x % 2; と等しいです。  | 
x %= 2; //xの元の値を2で割ったときのあまりをxに代入します。  | 
    |||||||||||||||
| &= | ビット代入演算 二項演算  | 
x &= y; とすると、 x = x & y; と等しいです。  | 
x &= 5; //xの元の値と5でビット論理積を行って結果の値をxに代入します。  | 
    |||||||||||||||
| |= | ビット代入演算 二項演算  | 
x |= y; とすると、 x = x | y; と等しいです。  | 
x |= 5; //xの元の値と5でビット論理和を行って結果の値をxに代入します。  | 
    |||||||||||||||
| ^= | ビット代入演算 二項演算  | 
x ^= y; とすると、 x = x ^ y; と等しいです。  | 
x ^= 5; //xの元の値と5でビット排他的論理和を行って結果の値をxに代入します。  | 
    |||||||||||||||
| <<= | ビット代入演算 二項演算  | 
x <<= y; とすると、 x = x << y; と等しいです。  | 
x <<= 5; //xの元の値を左へ5シフトした値をxに代入します。  | 
    |||||||||||||||
| >>= | ビット代入演算 二項演算  | 
x >>= y; とすると、 x = x >> y; と等しいです。  | 
x >>= 5; //xの元の値を右へ5シフトした値をxに代入します。  | 
    |||||||||||||||
| ++ | インクリメント 単項演算  | 
b = a++; のとき、 aをbに代入してからaに1を足します。 b = ++a; のとき、 aに1を足してからaをbに代入します。  | 
a = 1のとき、 b = a++; とすると、bは1に、 b = ++a; とするとbは2になります。 (どちらも最終的にaは2になります。) また、 a++; だけでも使用できます。 このときは、aの値が1増えるだけです。  | 
    |||||||||||||||
| -- | デクリメント 単項演算  | 
b = a--; のとき、 aをbに代入してからaから1を引きます。 b = --a; のとき、 aから1を引いてからaをbに代入します。  | 
a = 1のとき、 b = a--; とすると、bは1に、 b = --a; とするとbは0になります。 (どちらも最終的にaは0になります。) また、 a--; だけでも使用できます。 このときは、aの値が1減るだけです。  | 
    
※注意:ZDOOMには、指数の演算子がありません。
※注意:演算をするときに、()を使用することができます。()の中にまた()入るような式になっても問題はありません。
演算子の優先順位
日常生活で使う演算子にも優先順位ってありますよね。
例えば
3 + 2 * 5
とかです。
この場合、*記号の方が+記号よりも演算が優先されますよね。
ACSでも演算子の優先順位があります。
覚えていたら便利な物を少しだけ紹介しておきます。
・四則演算
これは日常生活と同じです。
*,/,%
演算子が
+,-
演算子より優先されます。
・論理演算子
x == 5 && y == 3
といった場合には、論理演算子が後回しになります。
・関係演算子
4 * 2 >= 4 + 2
といった場合には、関係演算子が後回しになります。
※優先順位が同じ演算子については、「左結合」とか「右結合」とかいって、さらに優先順位がありますが、覚えなくてもあまり差し支えはないと思います。
※演算子の優先順位に困ったら、「()」括弧を使いましょう。これはどんな演算子よりも優先されるので、確実に演算の順番を指定できます。