1、算術操作
(1)除了了%操作符之外,其他的⼏幾個操作符可以作⽤用於整數和浮點數。
(2)對於/操作符如果兩個運算元都為整數,執⾏行行整數除法。而只要有浮點數執⾏的就是浮點數
(3)%操作符的兩個運算元必須為整數。返回的是整除之後的餘數。
2、移位操作符
移位操作符 a<<1;左移1位(對二進位制)
右移操作符a>>1;右移1位。
首先右移運算分兩種:
(1)邏輯移位
左邊用0填充,右邊丟棄
(2)算術移位
左邊用原該值的符號位填充,右邊丟棄
【注意:對於移位運算子,不不要移動負數字,這個是標準未定義的。】
3、暗位操作符
(1)int a = 10;int b = 20;int c = a&b;
c=0;
二進位制 01010
10100
(2)負數,二進位制 原碼->反碼->補碼->與
& // 按位與
| // 按位或
^ // 按位異或
注:他們的運算元必須是整數。
例題:算乙個數儲存在二進位制序列中1的個數。
方法 1
#include
int main()
int num = 10;
int count= 0;// 計數
while(num)
if(num%2 == 1)
count++;
num = num/2;
printf("⼆二進位制中1的個數 = %d\n", count);
return 0;
} // 思考這樣的實現⽅方式有沒有問題?
方法 2 :
#include
int main()
int num = -1;
int i = 0;
int count = 0;// 計數
for(i=0; i<32; i++)
if( ((num>>i)&1) == 1 )
count++;
printf("⼆二進位制中1的個數 =%d\n",count);
return 0;
} // 思考還能不不能更更加優化,這⾥裡里必須迴圈 32 次的。
方法 3 :
#include
int main()
int num = -1;
int i = 0;
int count = 0;// 計數
while(num)
count++;
num = num&(num-1);
printf("⼆二進位制中1的個數 =%d\n",count);
return 0;
} // 這種⽅方式是不不是很好?達到了了優化的效果,但是難以想到。
【注意:對於移位運算子,不不要移動負數字,這個是標準未定義的。】
例如:int num = 10; num>>-1;//error
4、賦值操作符
(1)例如:a=a+=10==a+=10
(2)復合賦值符
這些運算子都可以寫成復合的效果。
int x = 10;
x = x+10;
x+=10;// 復合賦值
// 其他運算子⼀一樣的道理理。這樣寫更更加簡潔。
5、單目操作符
! 邏輯反操作
- 負值
+ 正值
& 取位址
int a = 0;
printf(「%p\n」,&a);//列印位址
printf(「%x\n」,&a);//列印十六進製制
sizeof 運算元的型別⻓長度(以位元組為單位)
~ 對⼀乙個數的⼆二進位制按位取反
-- 前置、後置
-++ 前置、後置
++ * 間接訪問操作符(解引⽤用操作符)
(型別) 強制型別轉換
6、關係操作符
!= ⽤用於測試「不不相等」
== ⽤用於測試「相等」
7、邏輯操作符
&& 邏輯與
|| 邏輯或
8、條件操作符
exp1 ? exp2 : exp3
9、逗號表示式
exp1, exp2, exp3, …expn
(1) 逗號表示式,就是⽤用逗號隔開的多個表示式。
(2) 逗號表示式,從左向右依次執⾏行行。整個表示式的結果是【最後⼀乙個表示式的結果。】
10、下標引⽤用、函式調⽤用和結構成員
(1)[ ]
運算元:⼀乙個陣列名 + ⼀乙個索引值
int arr[10];// 建立陣列
arr[9] = 10;// 實⽤用下標引⽤用操作符。
[ ]的兩個運算元是arr和9
(2)( ) 函式調⽤用操作符 接受⼀乙個或者多個運算元:第⼀乙個運算元是函式名,剩餘的運算元就是傳遞給函式的引數.
(3)訪問⼀乙個結構的成員
. 結構體.成員名
-> 結構體指標->成員名
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 對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。...