D-programming-operators-precedence

提供:Dev Guides
移動先:案内検索

Dプログラミング-演算子の優先順位

演算子の優先順位は、式内の用語のグループ化を決定します。 これは、式の評価方法に影響します。 特定の演算子は他の演算子よりも優先されます。

たとえば、乗算演算子は加算演算子よりも優先順位が高くなります。

式を考えてみましょう

x = 7 + 3 * 2。

ここで、xには20ではなく13が割り当てられます。 単純な理由は、演算子*の優先順位が+より高いため、最初に3 * 2が計算され、次に結果が7に加算されるからです。

ここでは、優先順位が最も高い演算子が表の上部に表示され、優先順位が最も低い演算子が下部に表示されます。 式内では、優先順位の高い演算子が最初に評価されます。

Category Operator Associativity
Postfix () [] → . ++ - - Left to right
Unary + - ! ~ ++ - - (type)* & sizeof Right to left
Multiplicative */% Left to right
Additive + - Left to right
Shift << >> Left to right
Relational < ⇐ > >= Left to right
Equality == != Left to right
Bitwise AND & Left to right
Bitwise XOR ^ Left to right
Bitwise OR
Left to right Logical AND &&
Left to right Logical OR
Left to right
Conditional ?: Right to left
Assignment = += -=* =/= %⇒>= <⇐ &= ^= =
Right to left Comma ,

Dプログラミング言語で利用可能な演算子の優先順位を理解するために、次の例を試してください-

import std.stdio;

int main(string[] args) {
   int a = 20;
   int b = 10;
   int c = 15;
   int d = 5;
   int e;

   e = (a + b) *c/d;     //( 30* 15 )/5
   writefln("Value of (a + b) *c/d is : %d\n",  e );

   e = ((a + b)* c)/d;   //(30 *15 )/5
   writefln("Value of ((a + b)* c)/d is  : %d\n" ,  e );

   e = (a + b) *(c/d);  //(30)* (15/5)
   writefln("Value of (a + b) *(c/d) is  : %d\n",  e );

   e = a + (b* c)/d;    // 20 + (150/5)
   writefln("Value of a + (b *c)/d is  : %d\n" ,  e );

   return 0;
}

上記のプログラムをコンパイルして実行すると、次の結果が生成されます-

Value of (a + b)* c/d is : 90

Value of ((a + b) *c)/d is  : 90

Value of (a + b)* (c/d) is  : 90

Value of a + (b * c)/d is  : 50