您好,登錄后才能下訂單哦!
這篇文章主要講解了“C語言的運算符用法介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C語言的運算符用法介紹”吧!
一、算數運算符(數學運算)
+ -
* / %
二、邏輯運算符(判斷真假)
|| &&
> >= < <=
!
? : 三元運算符
三、位運算符(重點)
<< 左移
>> 右移
& | ^ ~ 與 或 異或 取反
四、賦值運算符
五、內存訪問符號
() 限制符/函數訪問符
[] 內存訪問ID符
{} 函數體限制符
-> 地址訪問符
.變量訪問符
&取址符
*取值符
左右數據同一數據類型
注意
乘/除法在很多CPU中無法實現,或者需要多個CPU周期去實現嵌入式開發中,乘/除法可能需要第三方乘法庫才能實現乘/除法可能導致程序的移植性變差
%取模 場景:
獲取范圍數值時,如:int result=(x%100)+1; 則result值的范圍為[1.100]得到m進制的個位數,如8進制個位數: int a=x%8;介于取模的特性,可以用在循環數組結構中獲取下標,0,1,2,3,0,1,2,3,0,1,2…
邏輯或 邏輯與
大于 大于等于 小于 小于等于
非
三元運算符
運算場景:
左移1位,數據=數據2
m左移n位,m=m2?
運算場景:
右移1位,數據=數據/2
m右移n位,m=m/2?
注意:
signed和unsigned的右移動是不同的
signed修飾的變量的右移做while條件且變量為負數時,while會進入死循環(因為最高位=1,是符號位,永遠無法右移為0)
& 與
屏蔽清零器 a=a | (~(0x1<<n))
bit中任意一位與0相&,該位都為0
場景:
int a=0x1234; //屏蔽低8位 a=a& 0xff00;
int a=0x1234; //清零器,清除bit第五位的高電平,轉為低電平,其他位不變 a=a & (~(0x1<<5));
| 或
保留/設置:設置高電平的方法,如設置指定位為高電平,其他位不變 a=a | (0x1<<n)
bit中任意一位與1相|,該位都為1
場景:
int a=3; //使用左移可以更方便快速的讓第五位bit處于高電平,而且不影響其他位(嵌入式中bit最右邊通常讀作第0位) a= a| (0x1<<5)
^ 異或
相同為0,不同為1
1.通常用于數據加密算法,AES SHA1等
2.數據交換(排序中的一種方法)
a=a^b;
b=a^b;
a=a^b;
~ 取反
按位取反
= += -= &= ...
賦值運算實際上是組合運算的縮寫,非原子性操作,volatile內存可見特性會失效(實際上執行了兩步,只靠volatile無法解決)
1.限制符
(a+b)*c
1.函數訪問符
void fun();
內存訪問ID符(C語言中并不局限于數組的訪問,通過指針可以訪問整個內存空間)
a[0] a[1]
函數體限制符
&a;
*a;
感謝各位的閱讀,以上就是“C語言的運算符用法介紹”的內容了,經過本文的學習后,相信大家對C語言的運算符用法介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。