C語(yǔ)言的運(yùn)算符你了解嗎
前言
自學(xué)筆記,沒有歷史知識(shí)鋪墊(省略百度部分)C語(yǔ)言運(yùn)算符的使用
一、算數(shù)運(yùn)算符(數(shù)學(xué)運(yùn)算)
+ -
左右數(shù)據(jù)同一數(shù)據(jù)類型
* / %
注意
乘/除法在很多CPU中無(wú)法實(shí)現(xiàn),或者需要多個(gè)CPU周期去實(shí)現(xiàn)嵌入式開發(fā)中,乘/除法可能需要第三方乘法庫(kù)才能實(shí)現(xiàn)乘/除法可能導(dǎo)致程序的移植性變差
%取模 場(chǎng)景:
獲取范圍數(shù)值時(shí),如:int result=(x%100)+1; 則result值的范圍為[1.100]得到m進(jìn)制的個(gè)位數(shù),如8進(jìn)制個(gè)位數(shù): int a=x%8;介于取模的特性,可以用在循環(huán)數(shù)組結(jié)構(gòu)中獲取下標(biāo),0,1,2,3,0,1,2,3,0,1,2…
二、邏輯運(yùn)算符(判斷真假)
|| &&
邏輯或 邏輯與
> >= < <=
大于 大于等于 小于 小于等于
!
非
? : 三元運(yùn)算符
三元運(yùn)算符
三、位運(yùn)算符(重點(diǎn))
<< 左移
運(yùn)算場(chǎng)景:
左移1位,數(shù)據(jù)=數(shù)據(jù)2
m左移n位,m=m2ⁿ
>> 右移
運(yùn)算場(chǎng)景:
右移1位,數(shù)據(jù)=數(shù)據(jù)/2
m右移n位,m=m/2ⁿ
注意:
signed和unsigned的右移動(dòng)是不同的
signed修飾的變量的右移做while條件且變量為負(fù)數(shù)時(shí),while會(huì)進(jìn)入死循環(huán)(因?yàn)樽罡呶?1,是符號(hào)位,永遠(yuǎn)無(wú)法右移為0)
& | ^ ~ 與 或 異或 取反
& 與
屏蔽清零器 a=a | (~(0x1<<n))
bit中任意一位與0相&,該位都為0
場(chǎng)景:
int a=0x1234; //屏蔽低8位 a=a& 0xff00;
int a=0x1234; //清零器,清除bit第五位的高電平,轉(zhuǎn)為低電平,其他位不變 a=a & (~(0x1<<5));
| 或
保留/設(shè)置:設(shè)置高電平的方法,如設(shè)置指定位為高電平,其他位不變 a=a | (0x1<<n)
bit中任意一位與1相|,該位都為1
場(chǎng)景:
int a=3; //使用左移可以更方便快速的讓第五位bit處于高電平,而且不影響其他位(嵌入式中bit最右邊通常讀作第0位) a= a| (0x1<<5)
^ 異或
相同為0,不同為1
1.通常用于數(shù)據(jù)加密算法,AES SHA1等
2.數(shù)據(jù)交換(排序中的一種方法)
a=a^b;
b=a^b;
a=a^b;
~ 取反
按位取反
四、賦值運(yùn)算符
= += -= &= ...
賦值運(yùn)算實(shí)際上是組合運(yùn)算的縮寫,非原子性操作,volatile內(nèi)存可見特性會(huì)失效(實(shí)際上執(zhí)行了兩步,只靠volatile無(wú)法解決)
五、內(nèi)存訪問符號(hào)
() 限制符/函數(shù)訪問符
1.限制符
(a+b)*c
1.函數(shù)訪問符
void fun();
[] 內(nèi)存訪問ID符
內(nèi)存訪問ID符(C語(yǔ)言中并不局限于數(shù)組的訪問,通過指針可以訪問整個(gè)內(nèi)存空間)
a[0] a[1]
{} 函數(shù)體限制符
函數(shù)體限制符
-> 地址訪問符
.變量訪問符
&取址符
&a;
*取值符
*a;
總結(jié)
本章主要為C語(yǔ)言運(yùn)算符的使用
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C語(yǔ)言中使用快速排序算法對(duì)元素排序的實(shí)例詳解
這篇文章主要介紹了C語(yǔ)言中使用快速排序算法對(duì)元素排序的實(shí)例詳解,文中細(xì)分了幾個(gè)情況來舉例,在注釋里有說明,需要的朋友可以參考下2016-04-04詳解c++11以正確的姿勢(shì)輸出enum class的值
這篇文章主要介紹了詳解c++11以正確的姿勢(shì)輸出enum class的值,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10VTK8.1?在?Qt5.9?環(huán)境下的配置編譯和安裝過程
為了實(shí)現(xiàn)realsense的PCL點(diǎn)云顯示,需要VTK支持。由于整個(gè)平臺(tái)在Qt環(huán)境實(shí)現(xiàn),VTK編譯為Qt插件。整個(gè)過程并不復(fù)雜,網(wǎng)上的文章大多不全,自己梳理了一下,分享出來,需要的朋友可以參考下2022-07-07C/C++讀寫JSON數(shù)據(jù)的詳細(xì)過程記錄
JSON文件無(wú)論是在web開發(fā)、客戶端開發(fā)、服務(wù)端等開發(fā)中都是應(yīng)用比較廣泛的的第一種輕量級(jí)數(shù)據(jù)交換格式,非常方便閱讀和編寫,下面這篇文章主要給大家介紹了關(guān)于C/C++讀寫JSON數(shù)據(jù)的詳細(xì)過程,需要的朋友可以參考下2023-04-04華為機(jī)試題之統(tǒng)計(jì)單詞個(gè)數(shù)實(shí)例代碼
這篇文章主要介紹了華為機(jī)試題之統(tǒng)計(jì)單詞個(gè)數(shù)實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05