《第五章 操作符和表示式》

2021-09-06 10:46:23 字數 1042 閱讀 8697

//

這個函式返回引數值中值為1的位的個數

intcount_one_bits(unsigned value)

}}

(1)這裡我們先假設value的值為 0001 0000;

(2)那麼value&1不為0,則ones加1;

(3)  然後value右移1位;即0000 1000;此時value&1;任然不為0,ones加1;

如此迴圈下去;最終獲取value中bit為1的個數。

《左移                  >>右移

可以這麼記。比如書名號是《》這樣的,書名號的左邊《就是左移,書名號的右邊》就是右移。

左移就是值得最後bit位依次補0,而右移就是值得最前bit位依次補0.

&   |   ^ 

a = 0010 1110,

b = 0101 1011,

(1)    a&b  = 0000 1010; 如果兩位都為1,則為1;否則為0

0010 1110

0101 1011

0000 1010

(2) a|b = 0111 1111;如果兩位都為0,則為0;否則為1

0010 1110

0101 1011

0111 1111

(3) a^b = 0111 0101;如果兩位不同,結果為1,否則為0

0010 1110

0101 1011

0111 0101     

0000 1010

(4)把指定位的bit設定為1

value|=1<(5)把指定位的bit設定為0

value&=~(1<(6)判斷指定bit位是否為1

value&1《在運算元之前的操作符在變數值使用之前增加它的值;

在運算元之後的操作符在變數使用之後增加它的值。

只能低位向高位轉,

不能高位向低位轉

比如 int轉char;由於char只佔1byte;而int佔4個byte,那麼強轉後,int值必須丟棄3byte的值,轉成char型時,結構已經不對,裁剪了。

C和指標 第五章 操作符合表示式

01 a x y 3 不能說a和x都被賦值y 3,因為如果x是乙個字元型變數,那麼y 3的值就會被擷取片段,以便於容納於字元型別的變數,a就會被賦予被擷取後的值。操作符 間接訪問操作符 sizeof操作符判斷運算元的字元長度,以位元組為單位,sizeof 陣列 返回陣列的長度,以位元組為單位。b a...

第五章 表示式

表示式這章比較簡單,一般有過c的基礎的人都應該問題不大,要知道連我都覺得比較簡單,相信你們肯定更加容易了。new和delete表示式 動態建立和釋放陣列,定義變數時,必須指定其資料型別和名字。然而動態建立物件時,只需要指定其資料型別,而不必為該物件命名。取而代之的是,new表示式返回值指向新建立物件...

C primer 第五章 表示式

1 和 均是 2和除以2.2 為什麼建議多使用前自增?因為前置操作需要做的工作更少,只需要加1返回結果就行。而後置操作則需要先儲存運算元原來的值,以便返回未加1之前的操作結果。對於int型物件和指標,編譯器可以優化掉這項額外工作。但是對於更多的複雜迭代器型別,這種額外的工作可能花費更大的代價。3 s...