如何理解C C 語言的優先順序,需要背嗎?

2021-10-13 21:45:24 字數 1931 閱讀 6793

很多初學者都是在背c語言優先順序順序表和結合型方式(左結合or右結合),其實不需要,如何就背下來的話,那麼把++、.、->、這些混在一起,這時繼續背?還是必須解決這個問題?

看似表的內容很多,其實你只需要記住一點就好了,下面我和大家分享下。

我只把這四個作為最高優先順序,分別是

()[

].->

為什麼這四個操作符優先順序最高,有沒有更高的優先順序運算子?或者純粹的有什麼運算子能把這四個運算子給割裂開?

答案:不會,也是不可能。c++有乙個,之後分析。原因如下

() 是函式呼叫符,你需要呼叫函式時,難道需要被割裂開,被其他運算子搶先,出現這個我就認為這裡將有乙個函式呼叫,絕不可能是其他的

是陣列呼叫符,你需要使用陣列時,難道需要被割裂開,被其他運算子搶先,出現這個我就認為這裡將有乙個陣列,絕不可能是其他的

.是點運算子,表達結構體內成員,,難道需要被割裂開,被其他運算子搶先,出現這個我就認為這裡將有乙個組合資料,絕不可能是其他的

->是點運算子,表達結構體內成員,,難道需要被割裂開,被其他運算子搶先,出現這個我就認為這裡將有乙個組合資料,絕不可能是其他的

仔細想想,確實是這樣的,上面的四個運算子是不可分割開,它們出現下意識就知道是什麼東西,我們不會想到其他東西。

其實+++、–有兩種方式,即字首和字尾,字尾是第一梯隊,字首是第二梯隊,其實完全不用記,這東西就是就近原則

比如,以後綴的例,當然字首和字尾都分不開就沒多大意思了

***++

(*** … yyy)++

第一種++作用***,先用後加

第二種,作用於整體(*** … yyy),先用後加

它們總是結合最近的東西

指標和取位址是第二梯隊,第二梯隊都是右結合性,其他的都不用記了,因為你不會搞錯的。

舉乙個很常見的案例,main函式的乙個引數

型別是:char

*ar**;

*++ar**[

0]

分析:

首先四大最高優先順序,發現,出現陣列,即ar**[0],指向字串的第乙個元素

之後考慮++或者–判斷是字首還是字尾,是先取值還是先+1? 就近原則,即++ar**[0],指向字串的下乙個元素,這裡的最近的元素是ar**[0]?因為是第一步的結果,是肯定的

最後剩下*,當然是字串的下乙個元素的值[1]

總結,先看四大最高優先順序,之後考慮++/–的字首字尾形式,之後*和&

(

*++ar**)[0

]

首先四大最高優先順序,發現(),,顯然是乙個陣列,但是這個陣列作用於前面的整體,也就是*++ar**,所以接下來只會對*++ar**進行分析

之後考慮++或者–判斷是字首還是字尾,是先取值還是先+1? 就近原則,++ar**,即指向下乙個字串

最後*,即*++ar**是下乙個字串,

總體(*++ar**)[0],表達的是下乙個字串的[0]

備註:其實這個等價於**++ar**

總結,先看四大最高優先順序,之後考慮++/–的字首字尾形式,之後*和&

如何分析?

先看四大最高優先順序

之後考慮++/–的字首字尾形式

之後*和&

為什麼++/–會放在第二點考慮?為什麼不把它放在第一梯隊?

因為字尾是第一梯隊,字首是第二梯隊。然而,實際上並沒有把它特意歸為第

一、二,前字尾形式很容易讓人分辨其效果

為什麼*和&會放在第三點考慮?

因為乙個括號就該變了它結合順序,說明有更高的優先順序破壞了它,這也印證四大最高的優先順序符號是毫無疑問的。

其他算術、比較等,大家一看就懂了,沒什麼好分析的

可以理解,::表達隸屬於,難道應該被拆開嗎?要確實表達是這個類的!!!

C c語言運算子優先順序

優先順序 運算子名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...

C c語言運算子優先順序

優先順序 運算子名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...

C語言 如何理解宣告(宣告的優先順序順序)

a 宣告從它的名字開始讀取,然後按照優先順序順序依次讀取。b 優先順序從高到低依次是 b.1 宣告中被括號括起來的那部分 b.2 字尾操作符 括號 表示這是乙個函式,而 方括號表示這是乙個陣列。b.3 字首操作符 星號 表示 指向.的指標 c 如果const和 或 volatile關鍵字的後面緊跟型...