色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語(yǔ)言中兩個(gè)感嘆號(hào)的作用是什么

Dp1040 ? 來(lái)源:魚鷹談單片機(jī) ? 2023-12-04 11:02 ? 次閱讀

今天更新一篇小短文,希望對(duì)你有幫助。


int func(int temp){return!!temp;}

不知道你是否看過(guò)上面類似的代碼,兩個(gè)感嘆號(hào)出現(xiàn)在代碼中,難道代碼也有思想,也需要表達(dá)情感嗎?

剛學(xué)習(xí) C語(yǔ)言的時(shí)候,你應(yīng)該經(jīng)常看到過(guò) 1 個(gè)感嘆號(hào)的情況,比如:


if(one!=two){.......}-----------------------------------------if(!temp){......}-----------------------------------typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;-----------------------------------------one=!temp;

但兩個(gè)感嘆號(hào)估計(jì)就很難見到了。

魚鷹大學(xué)四年、工作三年都沒(méi)見過(guò)這種寫法,直到前段時(shí)間看 Linux 源碼,才接觸到,第一次看到時(shí)非常驚訝,怎么還有這種寫法?

為什么要用兩個(gè)感嘆號(hào),作用是什么,只是為了表現(xiàn) C 語(yǔ)言的奇技淫巧嗎?

仔細(xì)想過(guò)后才驚嘆其中的巧妙。

假設(shè)一個(gè)字節(jié)變量 byte,可代表范圍 0~255,0 代表其中一種含義,1 ~255 代表另一種含義(你可能會(huì)問(wèn),怎么不直接用 0 和 1 表示,因?yàn)檫@個(gè)變量本身不只有 0 和 1,只是在另一個(gè)使用的地方才會(huì)只使用二值含義,總之會(huì)有這種情況)。

如果我要用另一個(gè)變量 bit 來(lái)表示這兩種含義,一般情況我們會(huì)這么做:


int func(unsigned char byte){ unsigned char bit; if(byte==0){bit=0;}else{ bit = 1;}return bit;}

更優(yōu)雅簡(jiǎn)單一點(diǎn)是這樣寫:


int func(unsigned char byte){bit=byte?1:0; return bit;}

但不管哪一個(gè),都不如第一個(gè)簡(jiǎn)單高效。

簡(jiǎn)單可以很容易看出來(lái),高效何在?

它不需要判斷語(yǔ)句(判斷語(yǔ)句在單片機(jī)中可能影響不是很大,但在有多級(jí)緩存的情況下,影響可能很大,這就是為什么 linux 中用 likely() 之類的進(jìn)行優(yōu)化)。

這樣,不管原先的byte 是什么值,都將變成 0 或1

這樣一來(lái),如果調(diào)用者使用如下方式:


if(func() == 1){}或者 if(func()){ }

都不會(huì)出現(xiàn)問(wèn)題。

對(duì)于負(fù)數(shù)也是如此,只要是為了把 0 單獨(dú)分開,都可以采用這種方式。

這在底層開發(fā)中也非常實(shí)用。

比如 GPIO 有個(gè)引腳號(hào)需要判斷是 0 或 1,一般這樣:


bit=(GPIOB->IDR&GPIO_Pin_4) >> 4;

或者bit=(GPIOB->IDR&GPIO_Pin_4)? 1 : 0;

上一種確實(shí)也是不錯(cuò)的選擇,但是這里需要修改兩個(gè)地方,修改時(shí)很容易遺忘,所以不如下面這種簡(jiǎn)單:


bit=!!(GPIOB->IDR&GPIO_Pin_4);

如果換個(gè) IO ,需要修改代碼時(shí),只要修改一次就搞定,相當(dāng)方便,所以建議大家使用上面那種方式獲取位的值。

而從匯編的角度來(lái)看,兩次 ! 也只需要一條指令搞定:

253a80d8-923d-11ee-939d-92fbcf53809c.png

效率不輸移位方式!

本文轉(zhuǎn)載自魚鷹談單片機(jī)

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209329
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136692
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    639

    瀏覽量

    29185
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4779

    瀏覽量

    68524

原文標(biāo)題:7 年了,沒(méi)見過(guò)代碼中出現(xiàn)過(guò)兩個(gè)感嘆號(hào)

文章出處:【微信號(hào):玩點(diǎn)嵌入式,微信公眾號(hào):玩點(diǎn)嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    wifi旁邊有個(gè)感嘆號(hào), 顯示無(wú)internet是怎么回事?

    Wi-Fi 旁邊的感嘆號(hào),應(yīng)該表示:已連接到 AP(ESP8266),但是 AP 無(wú)法訪問(wèn)互聯(lián)網(wǎng) 吧?
    發(fā)表于 07-09 08:13

    cadence畫原理圖出現(xiàn)黃色感嘆號(hào)

    請(qǐng)問(wèn)cadence畫電路原理圖時(shí)出現(xiàn)黃色感嘆號(hào)是什么原因?
    發(fā)表于 07-12 09:05

    STM32F103做USB虛擬兩個(gè)串口時(shí)有一個(gè)在設(shè)備管理器上是黃色感嘆號(hào)

    各位好!我在做USB虛擬成兩個(gè)串口時(shí),安裝好驅(qū)動(dòng)程序,一個(gè)串口可以使用另外一個(gè)串口 在設(shè)備管理器上是黃色感嘆號(hào)。不知道有沒(méi)有遇到此情況。
    發(fā)表于 01-21 07:18

    硬件串口變成黃的感嘆號(hào)

    :硬件串口變成黃的感嘆號(hào)了。卸了pl2303驅(qū)動(dòng)也不行。刪了串口自動(dòng)裝驅(qū)動(dòng)時(shí)sernume.sys時(shí),始終裝不上,那位大俠知道原因?
    發(fā)表于 05-15 22:46

    為什么AD10界面右下角總是出現(xiàn)一個(gè)感嘆號(hào)

    ad10應(yīng)該是破解成功了,如圖:AD10界面右下角總是出現(xiàn)一個(gè)感嘆號(hào):怎么解決呢??
    發(fā)表于 08-02 04:38

    UDE-STK在設(shè)備管理器中顯示黃色感嘆號(hào)

    UDE-STK 在設(shè)備管理器中顯示黃色感嘆號(hào),然后無(wú)法正常使用是什么情況?之前在其他電腦上用過(guò)是正常可以使用的,換了臺(tái)電腦重新安裝就顯示黃色感嘆號(hào),無(wú)法用了怎么回事呢?在線急等,請(qǐng)各位大神指教!!!謝謝謝謝
    發(fā)表于 12-05 08:30

    驅(qū)動(dòng)裝好后總是有感嘆號(hào)的解決辦法?

    如題怎么解決,驅(qū)動(dòng)裝好后總是有感嘆號(hào),怎么辦,我的電腦是win10的,驅(qū)動(dòng)支持嗎?
    發(fā)表于 07-27 02:32

    kindle顯示電池感嘆號(hào)

    現(xiàn)象如標(biāo)題,可以通過(guò)百度 “kindle顯示電池感嘆號(hào)” 去看百度經(jīng)驗(yàn)。對(duì)于長(zhǎng)期未使用的kindle,應(yīng)該有電池保護(hù)程序,無(wú)法進(jìn)行充電,需要先激活電池。主要步驟和上面一樣,在個(gè)人進(jìn)行測(cè)試的時(shí)候,發(fā)現(xiàn)
    發(fā)表于 09-15 08:41

    使用CUBE時(shí)有些外設(shè)引腳出現(xiàn)黃色感嘆號(hào)怎么解決

    本人使用CUBE時(shí)遇到的問(wèn)題引腳配置時(shí),有些外設(shè)引腳出現(xiàn)黃色感嘆號(hào),有些引腳變紅色,如圖: 分析:我去百度找了下,有網(wǎng)友也 出現(xiàn)過(guò)此類問(wèn)題,被告知是出現(xiàn)黃色感嘆號(hào)說(shuō)明 部分引腳不可用了(被占
    發(fā)表于 02-28 13:35

    RT-Thread Studio工程文件帶有感嘆號(hào)這個(gè)是怎么一回事

    RT-Thread Studio 工程文件帶有感嘆號(hào),這個(gè)是怎么一回事,如何去除感嘆號(hào)
    發(fā)表于 11-30 10:11

    kindle開不機(jī)怎么辦?kindle開不了機(jī)屏幕電池感嘆號(hào)

    應(yīng)該挺多人都遇到過(guò)kindle沒(méi)電了充電一直顯示感嘆號(hào)的問(wèn)題,遇到kindle沒(méi)電了充電一直顯示感嘆號(hào)的問(wèn)題時(shí)不要慌,下面小編為大家?guī)?lái)幾個(gè)解決kindle沒(méi)電了充電一直顯示感嘆號(hào)的方法。 很多人都
    的頭像 發(fā)表于 06-04 11:27 ?4.8w次閱讀

    如何給C語(yǔ)言中的函數(shù)定義兩個(gè)不同的名字?

    最近有位哥問(wèn)我,如何給C語(yǔ)言中的函數(shù)定義兩個(gè)不同的名字?就是這兩個(gè)名字都是指向同一個(gè)函數(shù),同一個(gè)
    的頭像 發(fā)表于 12-19 16:21 ?821次閱讀

    電腦通用串行總線控制器感嘆號(hào)怎么辦

    控制器感嘆號(hào)時(shí),通常表示USB控制器存在問(wèn)題,可能是驅(qū)動(dòng)程序問(wèn)題、硬件故障或其他原因?qū)е碌摹1疚膶⒔榻B如何解決電腦通用串行總線控制器感嘆號(hào)的問(wèn)題。 檢查USB設(shè)備 首先,我們需要檢查連接到電腦的USB設(shè)備是否存在問(wèn)題。嘗試斷開所有USB設(shè)備,然后重新啟動(dòng)電腦,查看通用串行
    的頭像 發(fā)表于 08-29 15:53 ?3358次閱讀

    pci內(nèi)存控制器感嘆號(hào)有影響嗎

    PCI內(nèi)存控制器感嘆號(hào)通常表示硬件設(shè)備存在一些問(wèn)題,這可能會(huì)對(duì)您的計(jì)算機(jī)性能產(chǎn)生影響。以下是一些可能的原因和解決方法: 驅(qū)動(dòng)程序問(wèn)題:感嘆號(hào)可能表示PCI內(nèi)存控制器的驅(qū)動(dòng)程序存在問(wèn)題。這可能是由于
    的頭像 發(fā)表于 10-10 16:56 ?2303次閱讀

    pci內(nèi)存控制器和sm總線控制器感嘆號(hào)會(huì)造成電腦死機(jī)嗎?

    及時(shí)采取了解決措施等。以下是對(duì)這兩個(gè)問(wèn)題的分析: 一、PCI內(nèi)存控制器感嘆號(hào)與電腦死機(jī) 感嘆號(hào)的含義 : 在計(jì)算機(jī)的設(shè)備管理器中,如果一個(gè)設(shè)備旁邊出現(xiàn)
    的頭像 發(fā)表于 10-10 16:59 ?4522次閱讀
    主站蜘蛛池模板: 欧美性情video sexo视频| 亚洲第一免费播放区| 影888午夜理论不卡| 俄罗斯12x13x处| 美女乱草鲍高清照片| 亚洲免费视频网站| 国产成人综合95精品视频免费| 免费看成人毛片| 一级毛片免费视频网站| 国产精品亚欧美一区二区三区| 欧美日韩高清一区| 中文字幕在线观看网址| 国产中文字幕免费观看| 神电影院午夜dy888我不卡| FREE性丰满HD毛多多| 沦为公交两奶头春药高潮迭起| 亚洲精品久久久午夜麻豆| 高清毛片一区二区三区| 女攻男受高h全文肉肉| 中文字AV字幕在线观看| 灰原哀被啪漫画禁漫| 亚州综人网| 国产精品久久久精品a级小说| 日本aa大片| xxxx18动漫| 欧美日韩综合一区| 999久久精品国产| 麻豆乱码一卡二卡三卡视频| 一个人免费观看在线视频播放 | 日本无码色哟哟婷婷最新网站| 19不插片免费视频| 久久久久久久久a免费| 亚洲天堂视频网站| 好硬好湿好爽再深一点视频| 亚瑟天堂久久一区二区影院| 国产精品JIZZ视频免费| 水蜜桃亚洲一二三四在线| 国产AV一区二区三区日韩| 三叶草成人| 国产AV高清怡春院| 神马影院午夜理论二|