運(yùn)算符優(yōu)先級(jí)決定術(shù)語(yǔ)的表達(dá)分組。這會(huì)影響一個(gè)表達(dá)式是如何進(jìn)行計(jì)算。某些運(yùn)算符的優(yōu)先級(jí)高于其他運(yùn)算符;例如,乘法運(yùn)算符的優(yōu)先級(jí)比所述加法運(yùn)算高。
例如x= 7+ 3 *2;這里,x被賦值13,而不是20,因?yàn)檫\(yùn)算符 * 優(yōu)先級(jí)高于+,所以它首先被乘以 3 * 2,然后加上7。
這里,具有最高優(yōu)先級(jí)的操作出現(xiàn)在表格上方,那些具有最低出現(xiàn)在底部。在一個(gè)表達(dá)式,更高的優(yōu)先級(jí)運(yùn)算符將首先計(jì)算。
| 分類 | 操作符 | 關(guān)聯(lián) |
|---|---|---|
| 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 |
試試下面的例子來(lái)理解Tcl語(yǔ)言可供選擇的運(yùn)算符優(yōu)先級(jí):
#!/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"
當(dāng)編譯和執(zhí)行上面的程序,會(huì)產(chǎn)生以下結(jié)果:
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