Tcl-tk-tcl-operators-precedence

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

Tcl-演算子の優先順位

演算子の優先順位は、式内の用語のグループ化を決定します。 これは、式の評価方法に影響します。 特定の演算子は、他の演算子よりも優先順位が高くなっています。たとえば、乗算演算子は加算演算子よりも優先順位が高くなります。

:x = 7+ 3 * 2;ここでは、演算子*の優先順位が+よりも高いため、xには20ではなく13が割り当てられます。したがって、最初に3 * 2で乗算され、7に加算されます。

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

Category Operator Associativity
Unary PLUS - Right to left
Multiplicative */% Left to right
Additive PLUS - 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
Ternary ?: Right to left

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

#!/usr/bin/tclsh

set a 20
set b 10
set c 15
set d 5

set  e [expr [expr $a + $b]* $c/$d ]     ;# ( 30 *15 )/5
puts "Value of (a + b)* c/d is : $e\n"

set  e [expr  [expr [expr $a + $b] *$c]/$d]   ;#  (30* 15 )/5]
puts "Value of ((a + b) *c)/d is  : $e\n"

set  e  [expr [expr $a + $b]* [expr $c/$d] ]   ;# (30) *(15/5)
puts "Value of (a + b)* (c/d) is  : $e\n"

set  e  [expr $a + [expr $b *$c ]/$d ] ;#  20 + (150/5)
puts "Value of a + (b* c)/d is  :  $e\n"

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

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