女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言中兩個感嘆號的作用是什么

Dp1040 ? 來源:魚鷹談單片機 ? 2023-12-04 11:02 ? 次閱讀

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


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

不知道你是否看過上面類似的代碼,兩個感嘆號出現在代碼中,難道代碼也有思想,也需要表達情感嗎?

剛學習 C語言的時候,你應該經常看到過 1 個感嘆號的情況,比如:


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

但兩個感嘆號估計就很難見到了。

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

為什么要用兩個感嘆號,作用是什么,只是為了表現 C 語言的奇技淫巧嗎?

仔細想過后才驚嘆其中的巧妙。

假設一個字節變量 byte,可代表范圍 0~255,0 代表其中一種含義,1 ~255 代表另一種含義(你可能會問,怎么不直接用 0 和 1 表示,因為這個變量本身不只有 0 和 1,只是在另一個使用的地方才會只使用二值含義,總之會有這種情況)。

如果我要用另一個變量 bit 來表示這兩種含義,一般情況我們會這么做:


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

更優雅簡單一點是這樣寫:


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

但不管哪一個,都不如第一個簡單高效。

簡單可以很容易看出來,高效何在?

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

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

這樣一來,如果調用者使用如下方式:


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

都不會出現問題。

對于負數也是如此,只要是為了把 0 單獨分開,都可以采用這種方式。

這在底層開發中也非常實用。

比如 GPIO 有個引腳號需要判斷是 0 或 1,一般這樣:


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

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

上一種確實也是不錯的選擇,但是這里需要修改兩個地方,修改時很容易遺忘,所以不如下面這種簡單:


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

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

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

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

效率不輸移位方式!

本文轉載自魚鷹談單片機

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11457

    瀏覽量

    212767
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140262
  • 源碼
    +關注

    關注

    8

    文章

    667

    瀏覽量

    30136
  • 代碼
    +關注

    關注

    30

    文章

    4886

    瀏覽量

    70245

原文標題:7 年了,沒見過代碼中出現過兩個感嘆號

文章出處:【微信號:玩點嵌入式,微信公眾號:玩點嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    wifi旁邊有感嘆號, 顯示無internet是怎么回事?

    Wi-Fi 旁邊的感嘆號,應該表示:已連接到 AP(ESP8266),但是 AP 無法訪問互聯網 吧?
    發表于 07-09 08:13

    cadence畫原理圖出現黃色感嘆號

    請問cadence畫電路原理圖時出現黃色感嘆號是什么原因?
    發表于 07-12 09:05

    STM32F103做USB虛擬兩個串口時有一在設備管理器上是黃色感嘆號

    各位好!我在做USB虛擬成兩個串口時,安裝好驅動程序,一串口可以使用另外一串口 在設備管理器上是黃色感嘆號。不知道有沒有遇到此情況。
    發表于 01-21 07:18

    硬件串口變成黃的感嘆號

    :硬件串口變成黃的感嘆號了。卸了pl2303驅動也不行。刪了串口自動裝驅動時sernume.sys時,始終裝不上,那位大俠知道原因?
    發表于 05-15 22:46

    為什么AD10界面右下角總是出現一感嘆號

    ad10應該是破解成功了,如圖:AD10界面右下角總是出現一感嘆號:怎么解決呢??
    發表于 08-02 04:38

    UDE-STK在設備管理器中顯示黃色感嘆號

    UDE-STK 在設備管理器中顯示黃色感嘆號,然后無法正常使用是什么情況?之前在其他電腦上用過是正常可以使用的,換了臺電腦重新安裝就顯示黃色感嘆號,無法用了怎么回事呢?在線急等,請各位大神指教!!!謝謝謝謝
    發表于 12-05 08:30

    驅動裝好后總是有感嘆號的解決辦法?

    如題怎么解決,驅動裝好后總是有感嘆號,怎么辦,我的電腦是win10的,驅動支持嗎?
    發表于 07-27 02:32

    kindle顯示電池感嘆號

    現象如標題,可以通過百度 “kindle顯示電池感嘆號” 去看百度經驗。對于長期未使用的kindle,應該有電池保護程序,無法進行充電,需要先激活電池。主要步驟和上面一樣,在個人進行測試的時候,發現
    發表于 09-15 08:41

    使用CUBE時有些外設引腳出現黃色感嘆號怎么解決

    本人使用CUBE時遇到的問題引腳配置時,有些外設引腳出現黃色感嘆號,有些引腳變紅色,如圖: 分析:我去百度找了下,有網友也 出現過此類問題,被告知是出現黃色感嘆號說明 部分引腳不可用了(被占
    發表于 02-28 13:35

    RT-Thread Studio工程文件帶有感嘆號這個是怎么一回事

    RT-Thread Studio 工程文件帶有感嘆號,這個是怎么一回事,如何去除感嘆號
    發表于 11-30 10:11

    kindle開不機怎么辦?kindle開不了機屏幕電池感嘆號

    應該挺多人都遇到過kindle沒電了充電一直顯示感嘆號的問題,遇到kindle沒電了充電一直顯示感嘆號的問題時不要慌,下面小編為大家帶來幾個解決kindle沒電了充電一直顯示感嘆號的方法。 很多人都
    的頭像 發表于 06-04 11:27 ?4.9w次閱讀

    如何給C語言中的函數定義兩個不同的名字?

    最近有位哥問我,如何給C語言中的函數定義兩個不同的名字?就是這兩個名字都是指向同一函數,同一
    的頭像 發表于 12-19 16:21 ?1141次閱讀

    電腦通用串行總線控制器感嘆號怎么辦

    控制器感嘆號時,通常表示USB控制器存在問題,可能是驅動程序問題、硬件故障或其他原因導致的。本文將介紹如何解決電腦通用串行總線控制器感嘆號的問題。 檢查USB設備 首先,我們需要檢查連接到電腦的USB設備是否存在問題。嘗試斷開所有USB設備,然后重新啟動電腦,查看通用串行
    的頭像 發表于 08-29 15:53 ?8489次閱讀

    pci內存控制器感嘆號有影響嗎

    PCI內存控制器感嘆號通常表示硬件設備存在一些問題,這可能會對您的計算機性能產生影響。以下是一些可能的原因和解決方法: 驅動程序問題:感嘆號可能表示PCI內存控制器的驅動程序存在問題。這可能是由于
    的頭像 發表于 10-10 16:56 ?6827次閱讀

    pci內存控制器和sm總線控制器感嘆號會造成電腦死機嗎?

    及時采取了解決措施等。以下是對這兩個問題的分析: 一、PCI內存控制器感嘆號與電腦死機 感嘆號的含義 : 在計算機的設備管理器中,如果一設備旁邊出現
    的頭像 發表于 10-10 16:59 ?1.3w次閱讀