運算符是一種告訴編譯器執(zhí)行特定的數(shù)學(xué)或邏輯操作的符號季希。
運算符分為:算術(shù)運算符、關(guān)系運算符拘央、邏輯運算符、位運算符恕酸、賦值運算符和其他運算符。
算術(shù)運算符有:
????+(加):把兩個操作數(shù)相加
?????-(減):從第一個操作數(shù)中減去第二個操作數(shù)
????*(乘法):把兩個操作數(shù)相乘
????/(除法):分子除以分母
????%(取模):取模運算符胯陋,整除后的余數(shù)
????++(遞增):自增運算符蕊温,整數(shù)值增加 1?
????--(遞減):自減運算符袱箱,整數(shù)值減少 1
說明: c = a++ 或者 c = a--; 先賦值后運算; c = ++a或者 c = --a;先運算后賦值
關(guān)系運算符:
? ? 等于(==):檢查兩個操作數(shù)的值是否相等义矛,如果相等則條件為真发笔。(A == B) 為假。
? ? 不等于(!=):檢查兩個操作數(shù)的值是否相等凉翻,如果不相等則條件為真了讨。(A != B) 為真。
????大于(>):檢查左操作數(shù)的值是否大于右操作數(shù)的值制轰,如果是則條件為真前计。(A > B) 為假。
????小于(<):檢查左操作數(shù)的值是否小于右操作數(shù)的值垃杖,如果是則條件為真男杈。(A < B) 為真。
????大于等于(>=):檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值调俘,如果是則條件為真伶棒。
????????????????????????????????(A >= B) 為假。
????小于等于(<=):檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值彩库,如果是則條件為真肤无。(A <= B) 為真。
邏輯運算符:
????邏輯或(||):如果兩個操作數(shù)中有任意一個非零骇钦,則條件為真宛渐。(A && B) 為假。
????邏輯非(!): 用來逆轉(zhuǎn)操作數(shù)的邏輯狀態(tài)司忱。如果條件為真則邏輯非運算符將使其為假皇忿。(A || B) 為真。
????邏輯與(&&): 如果兩個操作數(shù)都非零坦仍,則條件為真鳍烁。!(A && B) 為真。
位運算符:
位運算符作用于位繁扎,并逐位執(zhí)行操作,分別有:
????&(按位與運算符): 按二進制位進行"與"運算幔荒。運算規(guī)則:0&0=0; 0&1=0; 1&0=0; 1&1=1;
?????| (按位或運算符): 按二進制位進行"或"運算。運算規(guī)則:0|0=0;? 0|1=1;? 1|0=1;? ? 1|1=1;
?????^?(異或運算符): 按二進制位進行"異或"運算梳玫。運算規(guī)則:0^0=0;? 0^1=1;? 1^0=1;? 1^1=0;
????~(取反運算符): 按二進制位進行"取反"運算爹梁。運算規(guī)則:~1=0;? ~0=1;
????<<(二進制左移運算符): 將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)提澎。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? A=60,A << 2 將得到 240姚垃,即為 1111 0000
????<<(二進制右移運算符): 將一個數(shù)的各二進制位全部右移若干位,正數(shù)左補0盼忌,負數(shù)左補1积糯,右邊丟棄掂墓。
? ??????????????????????????????????????????????A >> 2 將得到 15,即為 0000 1111
假如p = 0看成, q=0君编,p&q=0,p|q=0川慌,p^q=0;
假如p = 0吃嘿, q=1,p&q=0梦重,p|q=1兑燥,p^q=1;
假如p =1, q=1忍饰,p&q=1贪嫂,p|q=1,p^q=0;
假如p =1艾蓝, q=0力崇,p&q=0,p|q=1赢织,p^q=1;
賦值運算符
????????=(簡單的賦值運算符):把右邊操作數(shù)的值賦給左邊操作數(shù)亮靴,C = A + B 將把 A + B 的值賦給 C
????????+=(加且賦值運算符):把右邊操作數(shù)加上左邊操作數(shù)的結(jié)果賦值給左邊操作數(shù),C += A 相當(dāng)于 C = C + A
????????-=(減且賦值運算符):把左邊操作數(shù)減去右邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)于置,C -= A 相當(dāng)于 C = C -+ A
????????*=(乘且賦值運算符):把右邊操作數(shù)乘以左邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)茧吊,C*= A 相當(dāng)于 C = C *A
????????/=(除且賦值運算符):把左邊操作數(shù)除以右邊操作數(shù)的結(jié)果賦值給左邊操作數(shù),C /= A 相當(dāng)于 C = C / A
????????%=(取模且賦值運算符):求兩個操作數(shù)的模賦值給左邊操作數(shù)八毯,C %= A 相當(dāng)于 C = C % A
????????<<=(左移且賦值運算符):C <<= 2 等同于 C = C << 2
????????>>=(右移且賦值運算符):C >>= 2 等同于 C = C >> 2
????????&=(按位與且賦值運算符):C &= 2 等同于 C = C & 2
????????|=(按位或且賦值運算符):C |= 2 等同于 C = C | 2
????????^=(按位異或且賦值運算符):C ^= 2 等同于 C = C ^ 2
其他運算符
????????sizeof() : 返回變量的大小搓侄。eg:?sizeof(a) 將返回 4,其中 a 是整數(shù)话速。
????????& : 返回變量的內(nèi)存地址讶踪。eg: &a; 將給出變量的實際地址。
????????* :?指向一個變量泊交。eg: *a; 將指向一個變量乳讥。
????????? : 條件表達式,如果條件為真 ? 則值為 X : 否則值為 Y
C 中的運算符優(yōu)先級
????????后綴 :? () [] -> . ++ - -? ?==> 從左到右?
????????一元:??+ - ! ~ ++ - - (type)* & sizeof??==>? 從右到左?
????????乘除:??* / %? ?==>? 從左到右?
????????加減?:?+ -??==>? 從左到右?
????????移位:??<< >>? ?==>?從左到右?
????????關(guān)系:??< <= > >=? ?==>?從左到右?
????????相等:??== !=? ?==>??從左到右?
????????位與:? AND?&? ?==>? 從左到右?
????????位異或:? XOR?^?==>???從左到右?
????????位或:? OR?|??==>? 從左到右?
????????邏輯與:? AND?&&? ?==>?從左到右?
????????邏輯或:? OR?||? ?==>? 從左到右?
????????條件:???:???==>?從右到左?
????????賦值:??= += -= *= /= %=>>= <<= &= ^= |=? ?==>??從右到左?
????????逗號:??,??==>? 從左到右?