操作符分類:
算術操作符
移位操作符
位操作符
賦值操作符
單目操作符
關係操作符
邏輯操作符
條件操作符
逗號表示式
下標引用、函式呼叫和結構成員
算術操作符
除了 % 操作符之外,其他的幾個操作符可以作用於整數和浮點數。
對於 / 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。
% 操作符的兩個運算元必須為整數。返回的是整除之後的餘數。
左移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 對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。...