運算子是用來在程式執行時執行數學或邏輯運算的,在go語言中,乙個表示式可以包含多個運算子,當表示式中存在多個運算子時,就會遇到優先順序的問題,此時應該先處理哪個運算子呢?這個就由go語言運算子的優先順序來決定的。
比如對於下面的表示式:
var a, b, c int=16
,4,2
d := a + b*c
對於表示式a + b * c,如果按照數學規則推導,應該先計算乘法,再計算加法;b * c的結果為 8,a + 8的結果為 24,所以 d 最終的值也是 24。實際上go語言也是這樣處理的,先計算乘法再計算加法,和資料中的規則一樣,讀者可以親自驗證一下。
先計算乘法後計算加法,說明乘法運算子的優先順序比加法運算子的優先順序高。所謂優先順序,就是當多個運算子出現在同乙個表示式中時,先執行哪個運算子。
go語言有幾十種運算子,被分成十幾個級別,有的運算子優先順序不同,有的運算子優先順序相同,請看下表。
go語言運算子優先順序和結合性一覽表
注意:優先順序值越大,表示優先順序越高。
一下子記住所有運算子的優先順序並不容易,還好go語言中大部分運算子的優先順序和數學中是一樣的,大家在以後的程式設計過程中也會逐漸熟悉起來。如果實在搞不清,可以加括號,就像下面這樣:
d := a + (b * c)
括號的優先順序是最高的,括號中的表示式會優先執行,這樣各個運算子的執行順序就一目了然了。
運算子的結合性是指相同優先順序的運算子在同乙個表示式中,且沒有括號的時候,運算元計算的順序,通常有從左到右和從右到左兩種方式,例如,+加法運算子的結合性是從左到右,那麼表示式a + b + c則可以理解為為(a + b) + c。
GO語言的運算子和運算子優先順序
go語言中的運算子分為算數運算子 關係運算子 邏輯運算子 位運算子 賦值運算子和其他運算子六大類。算術運算子 運算子描述 相加 相減 相乘 相除 取餘 遞增 遞減關係運算子 運算子描述 判斷兩個值是否相等 判斷兩個值是否不相等 判斷左邊值是否大於右邊值 判斷左邊值是否小於右邊值 判斷左邊值是否大於等...
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...
運算子優先順序 Python 運算子優先順序
python 運算子優先順序 運算子描述 lambda lambda表示式 or布林 或 and布林 與 not x 布林 非 in,not in 成員測試 is,is not 同一性測試 比較 按位或 按位異或 按位與 移位 加法與減法 乘法 除法與取餘 x,x 正負號 x 按位翻轉 指數 x.a...