C語言中移位符需要注意的地方

2021-07-04 18:27:05 字數 286 閱讀 7117

1、無符號值的所有移位操作都是邏輯移位,即是在空位補0,但是對於有符號數,到底是採用邏輯移位還是算術移位是靠編譯器決定的。左移對於算術移位和邏輯移位都是一樣的。因此當你的專案中有移植性的要求時,請注意不要使用有符號數的右移操作,如果沒有移植性的要求時,應在使用有符號數的右移操作的地方,進行注釋說明。

2、要避免使用負數字大小的移位或進行超過資料位數的移位操作時,操作的結果也是和編譯器相關的,因此應該避免使用類似的操作,因為它的結果是不明確的而且是不可移植的。

因此對於移位符操作應盡量使用常規用法,對右移操作要格外注意移植性。

C語言需要注意的地方

今天看了一本c陷阱與指標的書,從中挑選了一些我自己平常不太注意的地方,或者有些是記不太清的東西,稍微整理了下有以下這些地方 1 與 是不同的,乙個是賦值,乙個是比較 2 與 是不同的,前者是按位與,後者是邏輯與,理解2 1和2 1的結果 3 整形常量第乙個字元是0,則代表8進製,0195這個理解成1...

C 運算子過載需要注意的地方

有時候自己寫乙個類,需要過載運算子,但對於一些操作符 如 等 可以在類裡寫,也可以在類外寫。那麼 c 編譯器會去怎麼呼叫呢?首先,我們知道,過載 機制可以允許多個函式有相同的函式名,但引數列表必須不同。c 編譯器經過名字改編 name mangling 可以在呼叫時依據所傳實參找到 最符合 的函式實...

位運算子 需要注意的地方

本人第乙個部落格,以後會經常寫 此時的我就像戲台上的老將軍 以免第二次犯同樣的錯誤。因為考研的原因,好久沒有coding了,略感生疏。瘋玩了十幾天,決定拿起書本,紮實地重新看一遍專業書。從開始學習程式設計起,就不是很注重位運算,因為覺得可以用別的方法代替。後來發現有些東西用位運算處理更有效率。這裡主...