在某乎看到有人說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 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...