運(yùn)算符是一個符號,告訴編譯器執(zhí)行特定的數(shù)學(xué)或邏輯操作。 Tcl語言有豐富的內(nèi)置運(yùn)算符,運(yùn)算符提供的以下幾種類型:
本教程將一個一個地來解釋算術(shù),關(guān)系,邏輯,位及其他運(yùn)算符。
下表列出了所有Tcl語言支持的算術(shù)運(yùn)算符。假設(shè)變量A=10,變量B=20,則:
| 運(yùn)算符 | 描述 | 實(shí)例 |
|---|---|---|
| + | 兩個操作數(shù)相加 | A + B = 30 |
| - | 第一個操作數(shù)減去第二個操作數(shù) | A - B = -10 |
| * | 兩個操作數(shù)相乘 | A * B = 200 |
| / | 除法分子通過去分母 | B / A = 2 |
| % | 模運(yùn)算及整數(shù)除法后的余數(shù) | B % A = 0 |
下表列出了所有Tcl語言支持的關(guān)系運(yùn)算符。假設(shè)變量A=10,以及變量B=20,則:
| 操作符 | 描述 | 例子 |
|---|---|---|
| == | 檢查兩個操作數(shù)的值是否相等,如果是的話那么條件為真。 | (A == B) 不為 true. |
| != | 檢查兩個操作數(shù)的值是否相等,如果值不相等,則條件為真。 | (A != B) 為 true. |
| > | 檢查左邊的操作數(shù)的值是否大于右操作數(shù)的值,如果是的話那么條件為真。 | (A > B) 不為 true. |
| < | 檢查左邊的操作數(shù)的值是否小于右操作數(shù)的值,如果是的話那么條件為真。 | (A < B) 為 true. |
| >= | 檢查左邊的操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是的話那么條件為真。 | (A >= B) 不為 true. |
| <= | 檢查左邊的操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是的話那么條件為真。 | (A <= B) 為 true. |
下表列出了所有Tcl語言支持的邏輯運(yùn)算符。假設(shè)變量A=1和變量B=0,則:
| 運(yùn)算符 | 描述 | 例子 |
|---|---|---|
| && | 所謂邏輯與操作。如果兩個操作數(shù)都非零,則條件變?yōu)檎妗?/td> | (A && B) 為 false. |
| || | 所謂的邏輯或操作。如果任何兩個操作數(shù)是非零,則條件變?yōu)檎妗?/td> | (A || B) 為 true. |
| ! | 所謂邏輯非運(yùn)算符。使用反轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。如果條件為真,那么邏輯非運(yùn)算符為假。 | !(A && B) 為 true. |
位運(yùn)算符適用于位并進(jìn)行逐位操作。&, |, 和 ^ 的真值表如下:
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
假設(shè),如果A =60;且B =13;現(xiàn)在以二進(jìn)制格式它們將如下:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
通過Tcl語言支持位運(yùn)算符列在下表中。假設(shè)變量A=60和變量B=13,則:
| 運(yùn)算符 | 描述 | 例子 |
|---|---|---|
| & | 二進(jìn)制和操作符副本位的結(jié)果,如果它存在于兩個操作數(shù)。 | (A & B) = 12, 也就是 0000 1100 |
| | | 二進(jìn)制或操作拷貝位,如果它存在一個操作數(shù)中。 | (A | B) = 61, 也就是 0011 1101 |
| ^ | 二進(jìn)制異或操作符的副本,如果它被設(shè)置在一個操作數(shù)而不是兩個比特。 | (A ^ B) = 49, 也就是 0011 0001 |
| << | 二進(jìn)制左移位運(yùn)算符。左邊的操作數(shù)的值向左移動由右操作數(shù)指定的位數(shù)。 | A << 2 = 240 也就是 1111 0000 |
| >> | 二進(jìn)制向右移位運(yùn)算符。左邊的操作數(shù)的值由右操作數(shù)指定的位數(shù)向右移動。 | A >> 2 = 15 也就是 0000 1111 |
| 運(yùn)算符 | 描述 | 示例 |
|---|---|---|
| ? : | Ternary | 條件為真 ? X : 否則Y |
運(yùn)算符優(yōu)先級決定術(shù)語的表達(dá)分組。這會影響一個表達(dá)式是如何進(jìn)行計(jì)算。某些運(yùn)算符的優(yōu)先級高于其他運(yùn)算符;例如,乘法運(yùn)算符的優(yōu)先級比所述加法運(yùn)算高。
例如:x =7 + 3* 2;這里,x被賦值13,而不是20,因?yàn)檫\(yùn)算符 * 優(yōu)先級高于+,所以它首先被乘以3 * 2,然后加上 7。
這里,具有最高優(yōu)先級的操作出現(xiàn)在表格上方,那些具有最低出現(xiàn)在底部。在一個表達(dá)式中,更高的優(yōu)先級運(yùn)算符將首先計(jì)算。
| 分類 | 運(yùn)算符 | 關(guān)聯(lián) |
|---|---|---|
| Unary | + - | Right to left |
| Multiplicative | * / % | Left to right |
| Additive | + - | Left to right |
| Shift | << >> | Left to right |
| Relational | < <= > >= | 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 |