+ - * / % ,這幾個就叫做算數(shù)操作符
但在使用時要注意一下幾個點:
1.%操作符只能作用在兩個整數(shù)上,返回的是整除之后的余數(shù)。
2.除了%,其他操作符既可作用于整數(shù),也可作用于浮點數(shù)。
將操作數(shù)的二進制補碼向左移動一位,左邊拋棄,右邊補0
將操作數(shù)的二進制補碼向右移動一位
在這里又分兩種右移方式:
①邏輯移位:左邊補0,右邊拋棄
②算數(shù)移位:左邊補原符號位,右邊拋棄
🐻在C語言中右移操作都是算數(shù)右移,但可以將一個數(shù)強制類型轉(zhuǎn)換成無符號數(shù)來實現(xiàn)邏輯右移
★對于移位操作符,不要移動負數(shù)位,不然編譯器可能會報錯
int a =10;
a>>-1;//可能會報錯
三.位操作符& //按位與
| //按位或
^ //按位異或
注:他們的操作數(shù)必須是整數(shù)。
這些操作符是對兩個操作數(shù)的補碼進行操作的。
四.賦值操作符+=
-=
*=
/=
<<= >>=
&=
|=
^=
用法舉例:
int a =0;
a+=1;//等價于a=a+1
a>>=1;//等價于a右移一位
a*=3;//等價于a=a*3
這些賦值操作符簡化了我們的代碼,并提高了代碼的可讀性,十分好用。
五.單目操作符顧名思義,單目操作符即為操作數(shù)只有一個的操作符
常用單目操作符有:
! 邏輯反操作
- 負值
+ 正值
& 取地址
sizeof 求操作數(shù)的類型長度(以字節(jié)為單位)
~ 對一個數(shù)的二進制按位取反
– 前置、后置–
++ 前置、后置++
* 間接訪問操作符(解引用操作符)
(類型) 強制類型轉(zhuǎn)換
其中有意思的是前置++和后置++(和- -),前置++是先加再使用,后置則是先使用再加。
可以這么理解:
前置++返回的是加1之后的操作數(shù),后置++返回的則是加1之前的操作數(shù)
int a =5;
printf("%d",a++);//輸出的是a加1之前的值,即打印5
printf("%d",a);由于上一行代碼打印之后a加了1,所以這里打印a的值為6
printf("%d",++a);輸出的是a加1之后的值,即打印7
其中sizeof是計算操作數(shù)的類型長度的,單位是字節(jié),但sizeof(數(shù)組名)又有一點特殊,具體的可以看看我寫的另一篇文章詳解C語言數(shù)組。
六.用于判斷條件的操作符>
<
>=
<=
== 判斷是否相等
!= 判斷是否不相等
&& 邏輯與:兩個條件都為真則返回1,否則返回0
|| 邏輯或:至少有一個條件為真則返回1,否則返回0
&&:從左往右判斷,只要有一個0則整體返回0,后面的不看了
||:從左往右判斷,只要有一個返回1則整體返回1,后面的不看了
int a=5;
int b =10;
int c= 15;
int i =0;
i = ++a||++b||c++;
printf("%d %d %d",a,b,c);//結(jié)果為6,10,15
打印的結(jié)果為6,10,15,原因是++a返回的值為6,為真,則這個||邏輯或就不會再繼續(xù)往下進行了,因為結(jié)果已經(jīng)確定了,這樣可以節(jié)省計算機的工作量。
七.多目操作符 1.exp1?exp2:exp3
這個三目操作符先判斷exp1的結(jié)果是否為真,若為真則運行exp2代碼,若為假則運行exp3。
int a=3;
int b =2;
int max=a>b?a:b//把a,b中較大的值放入max中
2.逗號表達式
逗號表達式就是用逗號隔開的若干表達式,從左往右依次執(zhí)行,逗號表達式的結(jié)果為最后一個表達式的果。
exp1,exp2,exp3……expN
int a =0;
int b =2;
int c = a+=2,b+=3,a>b;
printf("%d %d %d",a,b,c);//打印結(jié)果為2,5,0
🚀 八.下標引用,結(jié)構(gòu)體成員訪問
1.下標引用操作符:arr[i],表示訪問arr數(shù)組中下標為i的元素。[ ]是操作符,arr和i是它的兩個操作數(shù),arr[i]等價于*(arr+i)
2.結(jié)構(gòu)體成員訪問①結(jié)構(gòu)體名.成員名
②結(jié)構(gòu)體指針->成員名
C的整型算術(shù)運算總是至少以缺省整型類型的精度來進行的。翻譯一下就是C語言中的算數(shù)運算總是至少以整型類型的精度來進行的,為了獲得這個精度,表達式中的字符和短整型類型操作數(shù)在使用之前會被轉(zhuǎn)換成普通整型,這種轉(zhuǎn)換就叫做整型提升。
1.1整形提升的意義1.2整型提升的方式表達式的整型運算要在CPU的相應(yīng)運算器件內(nèi)執(zhí)行,CPU內(nèi)整型運算器(ALU)的操作數(shù)的字節(jié)長度
一般就是int的字節(jié)長度,同時也是CPU的通用寄存器的長度。
因此,即使兩個char類型的相加,在CPU執(zhí)行時實際上也要先轉(zhuǎn)換為CPU內(nèi)整型操作數(shù)的標準長
度。
通用CPU(general-purpose CPU)是難以直接實現(xiàn)兩個8比特字節(jié)直接相加運算(雖然機器指令
中可能有這種字節(jié)相加指令)。所以,表達式中各種長度可能小于int長度的整型值,都必須先轉(zhuǎn)
換為int或unsigned int,然后才能送入CPU去執(zhí)行運算。
整型提升是按照變量的數(shù)據(jù)類型的符號位來提升的
用例子來說明:
char a = 6;
char b = a+1;
這里a的符號位是0,所以整型提升時左邊補0。
🐒注意,只要參與了表達式運算,char 類型的a就會發(fā)生整型提升
char a =0;
printf("%u",sizeof(+a))//輸出的結(jié)果為4
在上述代碼中,+a是一個表達式,這里發(fā)生了整形提升,一個字節(jié)的char類型的a被提升為了4個字節(jié),所以這里打印的結(jié)果為4。
講到這里,還是再細說一下sizeof這個操作符
sizeof只是計算操作數(shù)的所占空間大小,單位是字節(jié),如果sizeof后面是一個賦值表達式,那么這個表達式也并不會真正去計算,它只會返回這個表達式返回的變量所占的空間大小。
舉個栗子:
int a =2;
int c = sizeof(a=a+1);//這里a并不會真的去加1
printf("%d %d",a,c);//打印的結(jié)果為2 4
在上述代碼中,sizeof只計算a的大小,不去管這個賦值表達式算出的結(jié)果,所以a的值仍為2。
而在sizeof(+a)這行代碼中,由于+a是一個表達式,所以a會整型提升,這個表達式的所占空間為4個字節(jié),所以sizeof(+a)得到的結(jié)果為4。
如果某個操作符的各個操作數(shù)屬于不同的類型,那么要先將一個操作數(shù)轉(zhuǎn)換為另一個操作數(shù)的類型,才能繼續(xù)進行操作。
longdouble
double
float
unsignedlongint longint
unsignedint
int
如果某個操作數(shù)在上面列表中的排名較低,那這個操作數(shù)要先轉(zhuǎn)換為另一個操作數(shù)的類型,之后才能進行運算。
十.操作符的屬性📕總結(jié)1.操作符的優(yōu)先級
2.操作符的結(jié)合性
3.是否控制求值順序
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
本文名稱:操作符詳解【C語言】-創(chuàng)新互聯(lián)
路徑分享:http://www.muchs.cn/article4/hgsoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、用戶體驗、微信小程序、網(wǎng)站設(shè)計公司、品牌網(wǎng)站設(shè)計、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容