C語言操作符

2021-09-26 22:50:54 字數 1890 閱讀 2785

操作符分類:

算術操作符

移位操作符

位操作符

賦值操作符

單目操作符

關係操作符

邏輯操作符

條件操作符

逗號表示式

下標引用、函式呼叫和結構成員

算術操作符

除了 % 操作符之外,其他的幾個操作符可以作用於整數和浮點數。

對於 / 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。

% 操作符的兩個運算元必須為整數。返回的是整除之後的餘數。

左移11 0000 1011

11<<1 0001 0110 22 相當於乘法11*^1

11<<2 0010 1100 44 相當於乘法11*^2 右移

11 0000 1011

11>>1 0000 0101 5 相當於除法 11/2^1

11 >>2 0000 0010 2 相當於除法 11/2^2

-1 1111 1111

-1 >>1 1111 1111 算術一位 補符號位

位操作符

位操作符有:

& //按位與

| //按位或

^ //按位異或

注:他們的運算元必須是整數

例題一:

不能建立臨時變數(第三個變數),實現兩個數的交換

#include

int main()

例題二:

求乙個整數儲存在記憶體中的二進位制中1的個數。

//方法1

#include

int main()

printf(「二進位制中1的個數 = %d\n」, count);

return 0; }

//方法2:

#include

int main()

printf(「二進位制中1的個數 = %d\n」,count);

return 0; }

//方法3:

#include

int main()

printf(「二進位制中1的個數 = %d\n」,count);

return 0;

復合賦值符

+=-=

*=/=

%=

=

<<=

&=|=

^=

表示式求值

表示式求值的順序一部分是由操作符的優先順序和結合性決定。

同樣,有些表示式的運算元在求值的過程中可能需要轉換為其他型別。

隱式型別轉換

c的整型算術運算總是至少以預設整型型別的精度來進行的。

為了獲得這個精度,表示式中的字元和短整型運算元在使用之前被轉換為普通整型,這種轉換稱為整型提公升。

//負數的整形提公升

char c1 = -1;

變數c1的二進位制位(補碼)中只有8個位元位:

1111111

因為 char 為有符號的 char

所以整形提公升的時候,高位補充符號位,即為1

提公升之後的結果是:

11111111111111111111111111111111

//正數的整形提公升

char c2 = 1;

變數c2的二進位制位(補碼)中只有8個位元位:

00000001

因為 char 為有符號的 char

所以整形提公升的時候,高位補充符號位,即為0

提公升之後的結果是:

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