Tutorial 4. Operators

ほとんどのoperatorはC++との違いを余り意識することなく使用できます。

Assignment (=, +=, -=, *=, /=, %=)


a=1;

このstatementは変数aに値1を代入しています。assignment operator (=)の左辺をleft value、右辺をright valueとし、left valueは変数であるべきで、right valueには全てのexpression (定数、変数、operation、それらの複合)を用いることが出来ます。
right valueを最初に求め、left valueへ代入するという順番で代入は解決されます。つまり、

a=a+1;

この場合、right value (a+1)が求められ、その値がaへと代入されることになり、aは元の値より+1された値となります。

a+=1;
a-=1;
a*=1;
a/=1;
a%=1;


上の例はそれぞれ、

a=a+1;
a=a-1;
a=a*1;
a=a/1;
a=a%1;



と同等の意味を持ちます。

Logical (&&, ||)


a&&b
a||b


これらのexpressionはboolean valueが結果として求められます。
&& はAND operatorであり、a且つbの場合にのみtrueという結果になります。
||はOR operatorであり、aまたはbの場合にtrueという結果になります。
この二つのoperatorではleft valueの値が最初に求められ、次にright valueの値を求めるという順番となります。left valueとright valueはそれぞれboolean valueを求めるexpressionとなります。

Relational and Equality (==, !=, <, >, <=, >=)

a==b;
a!=b;
a<b;
a>b;
a<=b;
a>=b;


これらのoperatorはboolean valueを結果として返します。

Operator true condition
== aとbが等しい
!= aとbが等しくない
> aがbより大きい
< aがb未満
>= aがb以上
<= aがb以下

Arithmetic (+, -, *, /, %)

a+b;    //addition
a-b;    //subtraction
a*b;    //multiplication
a/b;    //division
a%b;    //modulo


これらのoperatorはそれぞれのleft valueのobjectで定義されたデータ型を返します。
%とは除算における余りを求める演算子で、a%bはaをbで割った時の余りを求めることになります。


Unary (++, --, !, -)

++a;
--a;


はそれぞれ、

a=a+1;
a=a-1;


と同等の意味を持ちます。

!a;

!はNOT operatorで、aのboolean valueを反転した値を返します。

-a;

-はaの数値にマイナス符号を付けます。aの値が正の場合は負となり、負の場合は正へとなります。

Precedence

Operatorはexpressionの中で値が求められる優先順位があります。

Level Operator Description
1 ++, --, !, - Unary
2 *, /, % Multiplicative
3 +, - Additive
4 <, >, <=, >= Relational
5 ==, != Equality
6 && Logical AND
7 || Logical OR
8 =, +=, -=, *=, /=, %= Assignment


a=a+b*5;

例としてこのstatementでは、*+=の順番で値が求められます。
また()で囲まれたexpressionは常に優先されます。

a=(a+b)*5;


このstatementでは、+*=の順番で値が求められます。


Next: Tutorial 05. Control Structures
Prev: Tutorial 03. Constants