Ⅰ C語言中,運算符的優先順序和結合方向與編譯工具有關嗎在不同編譯工具下是如何處理的呢
首先優先順序和結合性與編譯器本身無關,只和標准有關
其次,你這里的問題和優先順序以及結合性無關,這是求值順序問題,而C語言中沒有規定求值順序,故實際上是無解的
http://bbs.csdn.net/topics/370153775
Ⅱ c語言中<<是什麼運算符
>>是右移運算符,移位運算符的一種:程序設計中,位操作運算符的一種。
C語言中位移位運算符是將數據看成二進制數,對其進行向左或向右移動若干位的運算。位移位運算符分為左移和右移兩種,均為雙目運算符。第一運算對象是移位對象,第二個運算對象是所移的二進制位數。
位移位運算符的運算對象、運算規則與結果、結合性如表2-16所示。
移位時,移出的位數全部丟棄,移出的空位補入的數與左移還是右移有關。如果是左移,則規定補入的數全部是0;如果是右移,還與被移位的數據是否帶符號有關。若是不帶符號數,則補入的數全部為0;若是帶符號數,則補入的數全部等於原數的最左端位上的原數(即原符號位)。
(2)編譯器原理優先順序擴展閱讀
優先順序:
語言中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。
這種自左至右的結合 方向就稱為「左結合性」。而自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。