C語言基礎篇(二)運算子
阿新 • • 發佈:2018-11-03
導航:
2.1 算數運算子
2.2 邏輯運算子
2.3 位運算
2.4 賦值運算
2.5 記憶體訪問符號
----->x<------------->x<--------------->x<--------------->x<------------->x<-----
2.1 算數運算子
-- +, -
在 +(-) 兩邊的資料型別,儘量一致.比如: A + B, A和B的型別儘量一致, 在定義加法的時候,可以加小括號(),這樣
可以避免語法邏輯錯誤 .
-- *, /, %
在cpu中, 其實是沒有 乘法 和 除法 的. cpu只能通過軟體模擬的方式, 來翻譯這種操作.
比如 : int a = b *10; cpu會用很多的模擬演算法, 來解釋 * 這種演算法. 效率是非常低的 .
如果是我們自己開發邏輯程式的話, * 和 / 是無法實現的. 所以 * 和 / 儘量少用 .
% 是求模. 實際上就是取餘數 . 求模的特性就是 res = x % n; 那麼 res 的範圍就是 0 ~ (n-1) 什麼時候用呢? 給一個任意的數字, 可能就是隨機數, 這個數字我們要得到一個 1 ~ 100 裡面的數, res = x % 100; //0 ~ 99; res += 1; // 1 ~ 100; 2.2 邏輯運算子 真 和 假 的選擇. ( 非0 和 0 ) -- |, ||; &, && 問: A || B 是否等價於 B || A ?? 答: 不等價. cpu 看到 A 已經是真了, 就不會去計算B的值. 同樣 (A && B) != (B && A) -----------------------> int main (void){
int a = 10; int res; res = ((a == 10) || printf("我並不會被執行,因為(a == 10)成立,為真,就不會來判斷我了. \n")); return 0; } -----------------------<
-- >>, >=, <, <= 略 . -- ! 原本如果是真, 加了!號後就是假. 對比取反~ . !: char a = 0x01; !a ==0x00; //原本非零的真,!後就是為0的假 . ~: char b = 0x01; ~b == 11111110 == 0xfe; //按位取反,0~1 1~0.
-- ?, : 常用與三元運算子 . 2.3 位運算 2.4 賦值運算 2.5 記憶體訪問符號
% 是求模. 實際上就是取餘數 . 求模的特性就是 res = x % n; 那麼 res 的範圍就是 0 ~ (n-1) 什麼時候用呢? 給一個任意的數字, 可能就是隨機數, 這個數字我們要得到一個 1 ~ 100 裡面的數, res = x % 100; //0 ~ 99; res += 1; // 1 ~ 100; 2.2 邏輯運算子 真 和 假 的選擇. ( 非0 和 0 ) -- |, ||; &, && 問: A || B 是否等價於 B || A ?? 答: 不等價. cpu 看到 A 已經是真了, 就不會去計算B的值. 同樣 (A && B) != (B && A) -----------------------> int main (void){
int a = 10; int res; res = ((a == 10) || printf("我並不會被執行,因為(a == 10)成立,為真,就不會來判斷我了. \n")); return 0; } -----------------------<
-- >>, >=, <, <= 略 . -- ! 原本如果是真, 加了!號後就是假. 對比取反~ . !: char a = 0x01; !a ==0x00; //原本非零的真,!後就是為0的假 . ~: char b = 0x01; ~b == 11111110 == 0xfe; //按位取反,0~1 1~0.
-- ?, : 常用與三元運算子 . 2.3 位運算 2.4 賦值運算 2.5 記憶體訪問符號