網(wǎng)站首頁 編程語言 正文
前言:在我們程序編寫領(lǐng)域,操作符給我們提供了很多的運(yùn)算便利,但操作符琳瑯滿目,我們要怎樣用好它們呢,下面就帶你來熟悉熟悉這些多樣的操作符。
操作符分類:
算術(shù)操作符 、移位操作符 、位操作符 、賦值操作符 、單目操作符 、關(guān)系操作符 、邏輯操作符 、條件操作符 、逗號(hào)表達(dá)式 、下標(biāo)引用、函數(shù)調(diào)用和結(jié)構(gòu)成員
1.算數(shù)操作符(+、--、*、%、/)
這里我們著重講一下取余(模)%操作符和除法/操作符
#include<stdio.h> int main() { //取余(模)、除法 int ret1 = 10 % 3;//取余(模),得到的結(jié)果是相除之后的余數(shù) int ret2 = 10 / 3;//除法-得到的結(jié)果是商 printf("ret1=%d\nret2=%d\n", ret1, ret2); //當(dāng)/(除號(hào))兩端都是整數(shù)的時(shí)候,執(zhí)行的是整數(shù)除法 //當(dāng)兩端只要有一個(gè)浮點(diǎn)數(shù),執(zhí)行的就是浮點(diǎn)數(shù)的除法 double ret = 10.0 / 3; printf("%lf\n", ret); return 0; }
2.移位操作符(左移<< 和 右移>>)
這里注意!!!
移位操作符的操作數(shù)只能是整數(shù),整數(shù)在內(nèi)存中存的是補(bǔ)碼,但最后輸出的,也就是我們看到的,是原碼。
(1)左移
#include<stdio.h> int main() { //2.移位操作符 //左移 int a = 5; //把a(bǔ)在內(nèi)存中存儲(chǔ)的二進(jìn)制位向左移動(dòng)2位 int b = a << 2; printf("%d\n", b); printf("%d\n", a); }
?計(jì)算演示:
(2)右移
分為算數(shù)右移和邏輯右移,具體是哪種右移取決于編譯器。
算數(shù)右移:右邊丟棄,左邊補(bǔ)原來的符號(hào)位(負(fù)數(shù)右移幾位左邊就添幾個(gè)1)
邏輯右移:右邊丟棄,左邊補(bǔ)0
(常見的編譯器都是算數(shù)右移)
#include<stdio.h> int main() { int a = 5; int b = a >> 2; printf("%d\n", b); return 0; }
3.位操作符
我們直接上代碼
#include<stdio.h> int main() { int a = 3; int b = -5; int x = a & b; int y = a | b; int z = a ^ b; printf("%d %d %d", x, y, z); return 0; }
(1)按位與&
相同為1,不同為0
(2)按位或
只要有1則為1,兩個(gè)同時(shí)為0才為0
(來個(gè)例題)
不能創(chuàng)建臨時(shí)變量(第三個(gè)變量),實(shí)現(xiàn)兩個(gè)數(shù)的交換
第一種,采用算數(shù)操作符來解決
#include<stdio.h> int main() { int a = 3, b = 5; printf("交換前:a=%d b=%d\n", a, b); a = a + b;//a+b=8 b = a - b;//此時(shí)的a=8,b還是5,則b=8-5=3,也就是之前的a a = a - b;//次時(shí)的a還是8,而b已經(jīng)賦值為3,所以這時(shí)的a=8-3=5,也就是之前的b printf("交換后:a=%d b=%d\n", a, b); return 0; }
?但是這種方法不夠完美,當(dāng)a很大,b也很大的時(shí)候,則放不進(jìn)整型里面,存在溢出問題,不能解決所有問題。那么我們就來看下第二種方法:使用異或
(相同的異或?yàn)?,任何數(shù)與0異或還是原的數(shù))
#include<stdio.h> int main() { int a = 3, b = 5; printf("交換前:a=%d b=%d\n", a, b); a = a ^ b; b = a ^ b;//相當(dāng)于a^b^b=a a = a ^ b;//相當(dāng)于a^b^a(此時(shí)的b=a)=b printf("交換后:a=%d b=%d\n", a, b); return 0; }
?但是這個(gè)方法的可讀性不高,也存在缺陷,如果你有更好的方法記得告訴博主哦!
4.賦值操作符
(1)=,沒什么好講的
這里要提一點(diǎn),連續(xù)賦值(不提倡),但要注意的是等號(hào)兩邊不能同時(shí)為常量
(2)復(fù)合賦值符
+= :a=a+b可以寫成a+=b
?-= :a=a-b可以寫成a-=b
*= :a=a*b可以寫成a*=b
下面以此類推
/= 、%= 、>>= 、<<= 、&= 、|= 、^=
好啦,操作符詳解的上篇今天就到這了,敬請(qǐng)期待下篇!!!
原文鏈接:https://blog.csdn.net/m0_56064145/article/details/121471999
相關(guān)推薦
- 2022-06-19 python繪制橫豎條形圖的方法_python
- 2022-09-27 Golang利用位運(yùn)算實(shí)現(xiàn)為程序加速_Golang
- 2022-09-17 go單體日志采集zincsearch方案實(shí)現(xiàn)_Golang
- 2023-01-17 Golang時(shí)間及時(shí)間戳的獲取轉(zhuǎn)換超全面詳細(xì)講解_Golang
- 2022-10-16 python?sys模塊使用方法介紹_python
- 2022-07-24 Golang實(shí)現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解_Golang
- 2022-05-06 Python判斷字符串中是否是中英文文小技巧
- 2023-02-17 Go語言如何實(shí)現(xiàn)TCP通信詳解_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支