Go語(yǔ)言運(yùn)算符優(yōu)先級(jí),是描述在計(jì)算機(jī)運(yùn)算計(jì)算表達(dá)式時(shí)執(zhí)行運(yùn)算的先后順序。 先執(zhí)行具有較高優(yōu)先級(jí)的運(yùn)算,然后執(zhí)行較低優(yōu)先級(jí)的運(yùn)算。 例如,我們常說(shuō)的先執(zhí)行相乘和除,再執(zhí)行加減運(yùn)算。
算術(shù)運(yùn)算符
關(guān)系運(yùn)算符
邏輯運(yùn)算符
位運(yùn)算符
賦值運(yùn)算符
其他運(yùn)算符
下面我們來(lái)對(duì)應(yīng)Go語(yǔ)言各個(gè)運(yùn)算符,算術(shù)、關(guān)系、邏輯、按位、賦值和其他運(yùn)算符的詳細(xì)講解。
下表顯示了Go語(yǔ)言支持的所有算術(shù)運(yùn)算符。假設(shè)變量 A 的值為 10,變量 B 的值為 20,則:
| 運(yùn)算符 | 描述 | 示例 |
|---|---|---|
+ | 添加兩個(gè)操作數(shù) | A+B=30 |
- | 從第一個(gè)操作數(shù)中減去第二個(gè)操作數(shù) | A-B=10 |
* | 將兩個(gè)操作數(shù)相乘 | A*B=200 |
/ | 將分子除以分母 | B/A=2 |
% | 模數(shù)運(yùn)算符,以及整數(shù)除法的余數(shù) | B%A=0 |
++ | 增加(遞增)運(yùn)算符,將整數(shù)值加一 | A++=11 |
-- | 相減(遞減)運(yùn)算符,將整數(shù)值減一 | A—=9 |
下表顯示了Go語(yǔ)言支持的所有關(guān)系運(yùn)算符。假設(shè)變量 A 的值為 10,變量 B 的值為 20,則:
| 運(yùn)算符 | 描述 | 示例 |
|---|---|---|
== | 檢查兩個(gè)操作數(shù)的值是否相等,如果相等,則條件為真。 | (A==B)結(jié)果為假 |
!= | 檢查兩個(gè)操作數(shù)的值是否相等,如果值不相等,則條件為真。 | (A!=B)結(jié)果為真 |
> | 檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是,則條件為真。 | (A>B)結(jié)果為假 |
< | 檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是,則條件為真。 | (A<B)結(jié)果為真 |
>= | 檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是,則條件為真。 | (A>=B)結(jié)果為假 |
<= | 檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是,則條件為真。 | (A<=B)結(jié)果為真 |
下表顯示了Go語(yǔ)言支持的所有邏輯運(yùn)算符。假設(shè)變量A的值為1,變量B的值為0,則:
| 運(yùn)算符 | 描述 | 示例 |
|---|---|---|
&& | 邏輯AND運(yùn)算符。如果兩個(gè)操作數(shù)都不為零,則條件為真。 | (A&&B)結(jié)果為真 |
|| | 邏輯OR運(yùn)算符。如果兩個(gè)操作數(shù)中的任何一個(gè)非零,則條件變?yōu)檎妗?/td> | (A||B)結(jié)果為真 |
! | 邏輯非運(yùn)算符。用于反轉(zhuǎn)其操作數(shù)的邏輯狀態(tài)。如果條件為真,則邏輯非運(yùn)算符將為假。 | !(A&&B)結(jié)果為真 |
按位操作符對(duì)位進(jìn)行操作,并執(zhí)行逐位操作。 &,|和^的真值表如下:
| 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 ~A = 1100 0011
Go語(yǔ)言支持的位運(yùn)算符,如在下表中所列。 假設(shè)變量A=60,并且變量B=13,則:
| 運(yùn)算符 | 描述 | 示例 |
|---|---|---|
| & | 如果兩個(gè)操作數(shù)中都存在二進(jìn)制AND運(yùn)算符,則將其復(fù)制到結(jié)果。 | (A&B)結(jié)果為12,也就是0000 1100 |
| | | 二進(jìn)制OR運(yùn)算符復(fù)制一個(gè)位,如果它存在于任一操作數(shù)。 | (A|B)結(jié)果為61,也就是0011 1101 |
| ^ | 二進(jìn)制XOR運(yùn)算符復(fù)制位,如果它在一個(gè)操作數(shù)中設(shè)置,但不是在兩個(gè)操作數(shù)中設(shè)置。 | (A^B)結(jié)果為49,也就是0011 0001 |
| << | 二進(jìn)制左移位運(yùn)算符。左操作數(shù)值向左移動(dòng)由右操作數(shù)指定的位數(shù)。 | A<<2結(jié)果為240,也就是1111 0000 |
| >> | 二進(jìn)制右移運(yùn)算符。左操作數(shù)值向右移動(dòng)由右操作數(shù)指定位數(shù)。 | A>>2結(jié)果為15,也就是0000 1111 |
Go語(yǔ)言支持以下賦值運(yùn)算符:
| 運(yùn)算符 | 描述 | 示例 |
|---|---|---|
| = | 簡(jiǎn)單賦值操作符,將值從右側(cè)操作數(shù)分配給左側(cè)操作數(shù) | C=A+B,就是將A+B的值賦給C |
+= | 相加和賦值運(yùn)算符,向左操作數(shù)添加右操作數(shù),并將結(jié)果賦給左操作數(shù) | C+=A相當(dāng)于C=C+A |
| -= | 減去和賦值運(yùn)算符,從左操作數(shù)中減去右操作數(shù),并將結(jié)果賦給左操作數(shù) | C-=A相當(dāng)于C=C-A |
| *= | 乘法和賦值運(yùn)算符,它將右操作數(shù)與左操作數(shù)相乘,并將結(jié)果賦給左操作數(shù) | C*=A相當(dāng)于C=C*A |
| /= | 除法和賦值運(yùn)算符,它用右操作數(shù)劃分左操作數(shù),并將結(jié)果分配給左操作數(shù) | C/=A相當(dāng)于C=C/A |
| %= | 模數(shù)和賦值運(yùn)算符,它使用兩個(gè)操作數(shù)來(lái)取模,并將結(jié)果分配給左操作數(shù) | C%=A相當(dāng)于C=C%A |
| <<= | 左移和賦值運(yùn)算符 | C<<=2相當(dāng)于C=C<<2 |
| >>= | 右移和賦值運(yùn)算符 | C>>=2相當(dāng)于C=C>>2 |
| &= | 按位和賦值運(yùn)算符 | C&=2相當(dāng)于C=C&2 |
| ^= | 按位異或和賦值運(yùn)算符 | C^=2相當(dāng)于C=C^2 |
| |= | 按位包含OR和賦值運(yùn)算符 | C|=2相當(dāng)于C=C|2 |
還有一些其他重要的運(yùn)算符包括sizeof和? :,在Go語(yǔ)言中也是支持的。
| 運(yùn)算符 | 描述 | 示例 |
|---|---|---|
| & | 返回變量的地址 | &a將給出變量a的實(shí)際地址。 |
| * | 指向變量的指針 | *a是指向變量a的指針。 |
運(yùn)算符優(yōu)先級(jí)確定表達(dá)式中的分組。這會(huì)影響表達(dá)式的計(jì)算方式。某些運(yùn)算符比其他運(yùn)算符具有更高的優(yōu)先級(jí); 例如,乘法運(yùn)算符比加法運(yùn)算符有更高的優(yōu)先級(jí)。
當(dāng)同級(jí)別的運(yùn)算符出現(xiàn)在同一個(gè)表達(dá)式中,從左到右的順序計(jì)算,比如乘除一起,不管是乘在前面還是除在前面都是從左到右計(jì)算乘、除運(yùn)算符。加減亦是如此。
例如:x = 7 + 3 * 2; 這里,計(jì)算結(jié)果x被分配13,而不是20,因?yàn)檫\(yùn)算符 *具有比+有更的優(yōu)先級(jí),所以它首先乘以3 * 2,然后加上7。
這里,具有最高優(yōu)先級(jí)的運(yùn)算符放在表的頂部,具有最低優(yōu)先級(jí)的運(yùn)算符出現(xiàn)在底部。 在表達(dá)式中,將首先計(jì)算較高優(yōu)先級(jí)運(yùn)算符。
| 分類 | 描述 | 關(guān)聯(lián)性 |
|---|---|---|
| 后綴 | ()[]->.++ -- | 左到右 |
| 一元 | + -!~++ --(type)*&sizeof | 右到左 |
| 乘法 | */ % | 左到右 |
| 加法 | + - | 左到右 |
| 移位 | <<>> | 左到右 |
| 關(guān)系 | <<=>>= | 左到右 |
| 相等 | ==!= | 左到右 |
| 按位AND | & | 左到右 |
| 按位XOR | ^ | 左到右 |
| 按位OR | | | 左到右 |
| 邏輯AND | && | 左到右 |
| 邏輯OR | || | 左到右 |
| 條件 | ?: | 右到左 |
| 分配 | =+=-=*=/= %=>>= <<= &= ^= |= | 右到左 |
| 逗號(hào) | , | 左到右 |
綜合技術(shù)交流:點(diǎn)擊加入--> [SO JSON官方交流①群][收費(fèi)]
綜合技術(shù)交流:點(diǎn)擊加入--> [SO JSON官方交流②群][免費(fèi)]
要求:不能發(fā)廣告、暴力、政治、付費(fèi)教程,違者直接踢出。
備注:入群費(fèi)用5元,沒(méi)有QQ錢包,可以先支付寶 or 微信掃碼支付5元贊助后,我拉您進(jìn)去。QQ聯(lián)系我。
掃碼贊助:贊助二維碼。
技術(shù)交流QQ群:①群259217951,②群166848545
站長(zhǎng)郵箱:so@sojson.com
對(duì)頁(yè)面內(nèi)容有任何疑問(wèn)和建議,請(qǐng)聯(lián)系我們。
所有贊助/開(kāi)支都講公開(kāi)明細(xì),用于網(wǎng)站維護(hù):贊助名單查看
正在加載... ...