TCL運算子優先順序


運算子優先順序決定術語的表達分組。這會影響一個表示式是如何進行計算。某些運算子的優先順序高於其他運算子;例如,乘法運算子的優先順序比所述加法運算高。

例如x= 7+ 3 *2;這裡,x被賦值13,而不是20,因為運算子 * 優先順序高於+,所以它首先被乘以 3 * 2,然後加上7。

這裡,具有最高優先順序的操作出現在表格上方,那些具有最低出現在底部。在一個表示式,更高的優先順序運算子將首先計算。

分類 操作符 關聯
Unary + - 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
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