C語言操作符

2021-08-29 14:07:47 字數 1970 閱讀 7667

1.%不可以作用於整數和浮點數,例如:int % double,必須兩個運算元都為整型;

2.對於/操作符,若兩個運算元都為整型則進行整型運算,若有乙個運算元為浮點型,則進行浮點數運算。

1.左移: num<<1,左邊拋棄,右邊補0;

2.右移:num>>1

(1)邏輯移位:左邊補0,右邊丟棄;

(2)算術移位:左邊用原本值的符號位填充,右邊丟棄。

記憶體中儲存負數為其補碼,-1則為32位全1

對於移位操作符,不要移動負數字,這是標準為定義的。

int num =10;

num>>-1

//error

&

//按位與

|//按位或

^//按位異或

//以上操作符的運算元都必須為整數

面試題:

不能建立臨時變數,實現兩個數的交換。

int main()

sizeof      運算元的型別長度(以位元組為單位)

~ 對乙個數的二進位制形式按位取反

*間接訪問操作符(解引用操作符)

(型別) 強制型別轉換

特別注意==和=不小心寫錯,造成的弱智bug

int main()

邏輯與運算,若左運算元為0,則不再進行右運算元的運算;

邏輯或運算,若左運算元為1,則不再進行右運算元的運算。

exp1 ? exp2 : exp3
exp1, exp2, exp3,

...

逗號表示式,從左到右依次執行,結果為最後乙個表示式的結果

1.[ ]下標引用操作符

運算元:乙個陣列名 + 乙個索引值 (兩個運算元)

2.()函式呼叫操作符至少有乙個運算元(函式名)

3.訪問乙個結構的成員

. 結構體.成員名

-> 結構體指標->成員名

整形提公升

表示式的整型運算要在cpu的相應運算器件中執行,cpu內整型運算器(alu)的運算元的位元組長度一般就是int的位元組長度,同時也是cpu的通用暫存器的長度;

因此,即使兩個char型別相加,在cpu中執行時實際上也要先轉換為cpu內整數運算元的標準長度;

通用cpu是難以直接實現兩個8位元位直接相加運算,所以表示式中各種長度可能小於int長度的整型值,都必須先轉換為int或unsigned int,然後才能送入cpu執行運算。

char a, b, c;

a = b + c;

b和c的值先被提公升為普通整型,然後再執行加法運算;

加法運算完成之後,結果被截斷,然後再存入a中。

整形提公升是按照變數的資料型別的符號位來提公升的

//負數的整形提公升

char c1 =-1

; c1只有8個位元位:

11111111

整形提公升後:

11111111111111111111111111111111

//正數數的整形提公升

char c2 =1;

00000001

00000000000000000000000000000001

//無符號整形提公升,高位補0

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 對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。...