人生苦短,遠離bug C語言操作符

2021-10-07 16:09:21 字數 516 閱讀 7550

u32count =2^

32-1;

//表示式1

u32count =

pow(2,

32)-1

;// 表示式2

很簡單的兩個表示式,卻讓同事栽了跟頭。

事情是這樣的,今天在除錯**的時候,看到一位同事****現了表示式1。根據上下文可以看到,他實際希望傳遞32位全1值。然而實際執行時,發現u32count的值為0x21。

崩潰中,我們前期review**也沒注意,哈哈哈哈,集體忽視了。

實際上,他把數學中的符號和c語言中的操作符搞混淆了,完全搞錯了。2^32可不就是異或操作,結果為34,即0x22,減一為0x21。

表示式2是正確的,另外我們常用的方式是定義乙個0xffffffff的巨集定義,作為32位全1,不會用公式計算。

人生苦短,遠離bug

c語言操作符 位操作符 移位操作符

1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...

C語言 , 操作符

例如 define to string s s 將會使編譯器把以下命令 cout to string hello world endl 理解為cout hello world endl 例如 define concatenate x,y x y int xy 10 將會使編譯器把 cout conc...

C語言操作符

操作符的分類 1 算術操作符 2 移位操作符 3 位操作符 4 賦值操作符 5 單目操作符 6 關係操作符 7 邏輯操作符 8 條件操作符 9 逗號表示式 1 算術操作符 1 除了 操作符之外,不能用於浮點數。2 對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。...