1.算術操作符
+ - * / %
% 只適用于整數類型運算,其余運算符也可用于浮點運算。
2.移位操作符
左移:左邊丟棄,右邊補0;
右移:
? ? ? ? ?不同編譯器采取的移位方式不同,所有有了“右移”的程序不可移植
? ? ? ? 1.邏輯移位:左邊補0
? ? ? ? 2.算術移位:左邊補符號位? ?
?3.賦值操作符
1.寫易于調試和閱讀的賦值語句。
例如:? ?r = s+(t =u-v) /3;
? ? ? ? ? ? ? /*等價于*/
? ? ? ? ? ? t = u-v;
? ? ? ? ? ? r = s+t/3;
2. 字符型變量賦值的截短問題
char ch;
...
while((ch = getchar()) ! =EOF)
4.符合賦值符
? ?在復雜的語句中他更容易使用,簡化了程序,防止錯誤發生。
5.單目操作符
1.CAST(強制類型轉換)
(float)a;
(int)a;
2.sizeof()運算符
sizeof(a = b? +1);//a的值不變,sizeof()不計算內部的數值
返回整形變量的字節數 sizeof(int)
返回變量x所占的字節數sizeof x
6.關系操作符
多使用括號,保證算式的邏輯順序和運算優先級符合要求
7.逗號操作符
xxxx,xxxxx,xxxxx,? //計算的是最后一個表達式。
這樣寫可以簡化運算
求取二進制中一的個數:
方法1
while (u) {count++;u = u & (u - 1);}
內部運算過程。記住這個寫法 u = u&(u-1)
U= 91001 count =1
1001&1000 1000 count = 21000&01110000 over
方法2
if (num & 1 == 1){count++;}num = num >> 1;
內部運算過程?
1001&00010001 count = 1;0100&000100000010&000100000001&0001 0001 count = 2