我們在之前的文章中介紹過變量、數據類型,如果我們想使用C語言進行的一定的運算,例如常見的加減乘除運算,此時我們就需要運算符來輔助我們實現。
算數運算符
對于算數運算符,上過小學的都知道,涉及到算數運算,不外乎加、減、乘、除,當然除了基本的運算還有一種模除運算,也稱作取餘。
加法: ,加數與被加數無特殊要求,可以是常數與變量的兩個任意組合。
減法:-,要求同加法。
乘法:*, 要求同上。
除法:/,要求同上。
模除:%,操作數要求必須為整數。
自增: ,有兩種使用方式i 及 i,前者先賦值給變量,再自增1,後者相反。
自減:--,同自增,i--及--i,自增與自減隻能是變量。
關系運算符
關系運算符主要比較兩者的大小或是否相等,以A=4,B=2為兩個變量舉例關系運算符用法,主要運算符如下:
大于:>, e.g. A > B 結果為1。
小于:<, e.g. A < B 結果為0。
等于:==, e.g. A == B 結果為0。
大于等于:>=, e.g. A>=B 結果為1。
小于等于:<=, e.g. A<=B 結果為0。
不等于:!=, e.g. A!=B 結果為1。
邏輯運算符
邏輯運算符主要進行邏輯運算,主要是與、或、非等,主要邏輯運算如下,以A=4,B=2為例:
邏輯與:&&, A && B, 結果為 1。特點:A與B同時不為0,結果才為1。
邏輯或:||,A || B, 結果為1。特點:A與B同時為0,結果才為0。
邏輯非:!, ! A 結果為0。特點:A為0,結果為1,其他為0。
位運算符
位運算符主要是對變量進行位的運算,以A=4,B=3為例:A的二進制位表達為100b,B的二進制位表達011b。
位與:&,e.g. A & B, 按位進行與運算,結果為000=0。
位或:|,e.g. A | B,按位進行或運算,結果為111=7。
位非:~,e.g. ~A, 按位取反,同時A(int類型,在64位機器上字節)是整數,符号位也要取反,結果為fffffffb(補碼)=-5。
位異或:^,e.g. A ^ B, 按位進行異或,結果為111=7。
移位:>> 右移位,<< 左移位;e.g. A >> 1 = 2,A << 1 = 8。
賦值運算符
賦值運算符可以細分為兩類,第一類就是基本的賦值運算符“=”,第二類是複合賦值運算符,由基本的賦值運算符與其他運算符複合而成。
以A=4,B=2為例
“ =”:A = B, 結果A = 6。
“-=”:A -= B, 結果A = 2。
“*=”:A *= B, 結果A = 12。
“/=”: A /= B, 結果A = 2。
還有其他類似的複合賦值運算符:>>=, <<=, &=, |=, ^=, 大家下面可以嘗試一下。
三目運算符
三目運算符又稱條件運算符,因為它有三個3個操作數,有時又稱它為三元運算符。符号表示為?:。它具有右結合性,A=4,B=2,我們來看下它的用法。
int res = A > B ? 1 : 0;
首先判斷A > B,如果為真,則返回第二個操作數,否則返回第三個操作數,同時第二個或第三個操作數還可以是三目運算符。此處顯而易見,res的結果為1。
特殊運算符
我之所以稱之為特殊運算符,一般初學者看到這個運算符會想當然的把它認為是函數,但是它不是!!!這個運算符就是sizeof,它用來獲取操作數的字節大小。
#include<stdio.h>
typedef struct {
inta;
union {
charb;
doublec;
};
chard;
} A;
int main(int argc, char const *argv[]){
/* code */
int a1 = 4, a2=3.0;
printf("%d\n", sizeof(a1));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(A));
return 0;
}
結果:
4
4
24
運算符優先級其實是一個比較複雜東西,網上一般會通過一個長長的表格來列出C語言中運算符優先級,除非我們有最強大腦,否則一般也記不住,我給出的建議就是,如果不清楚運算符優先級,我們在使用的過程中使用括号強制給它安排優先級。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!