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