C語言真的存在 趨向於運算子 嗎

2021-10-03 18:41:01 字數 1183 閱讀 4649

在某乎看到有人說c語言有個非常鮮為人知的運算子--趨向於運算子

差不多就是下面這樣: 

#includeint main(void)

return 0;

}

輸出: 

conut = 9

conut = 8

conut = 7

conut = 6

conut = 5

conut = 4

conut = 3

conut = 2

conut = 1

conut = 0

初看感覺沒毛病, 但是這東西也經不起推敲, 下面我詳細說明下: 

#includeint main(void)

輸出: 

return: 1
其實從這裡我們就可以看出, 所謂的"趨向於運算子", 不過是先把conut和0相比較, 再將conut自減1罷了所以, 站在編譯器的角度看, 那行**其實是這樣子的: 

while (conut-- > 0)

//為方便對比, 便再次貼出原**

while (conut --> 0) //此處自減運算子和運算元之間的空格沒有影響

其他的變體, 例如說: conut ++ 0 等等, 都是類似的套路補充證據:

下圖是乙個關於c語言運算子優先順序的**: 

這裡也可以看到, 圖中並沒有所謂的"趨向於運算子"

總結:

c語言中並不存在"趨向於運算子", 它只不過是其他運算子'拼'出來的

參考:

感謝上面的大佬. 如有錯誤紕漏, 歡迎指出, 感謝不盡

C C 趨向於運算子的惡作劇

前陣看到乙個帖子,說c語言有乙個鮮為人知的運算子叫做 趨向於 寫作 還給出了原始碼 include int main int argc,char argc return 0 po主說自己親自測試過會列印出9 8 7 6 5 4 3 2 1 0 當時困得不行,感覺挺有意思,也沒去在意。今天做畢業設計的...

C語言 運算子與 運算子

我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...

C語言 運算子和 運算子

變數 代表 取變數的位址 變數 代表 指標型的變數 取址運算子 用來取得其運算元的位址。如果運算元 x 的型別為 t,則表示式 x 的型別是 t 型別指標 指向 t 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...