91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

C代碼中看到連續(xù)“??!”

Q4MP_gh_c472c21 ? 來(lái)源:最后一個(gè)bug ? 作者:bug菌 ? 2022-04-24 09:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近一直在居家辦公,原本對(duì)居家辦公還心存一絲幻想,想著把一天的工作提前做完,就可以留給自己更多的空間。

然而,當(dāng)真正居家辦公,才體會(huì)到其中的心塞與無(wú)奈,客戶、售后電話的輪番轟炸、同事經(jīng)常找不到人......等諸多問(wèn)題,可把我給整麻了

進(jìn)入正片:

1

??!操作

看到交流群里有朋友拋出一段C語(yǔ)言操作:
offset=len/64+!!(len%64);
這兩個(gè)連續(xù)的感嘆號(hào)把有些人給整蒙圈了,還有些朋友調(diào)侃道: !!表示語(yǔ)氣加重,事情非常緊急得盡快處理,可把我給整笑了。其實(shí)都是常規(guī)操作吧,只是這樣的寫(xiě)法在正常的編碼過(guò)程中并不多見(jiàn)。首先這兩個(gè)!!并不是什么C語(yǔ)言新的關(guān)鍵字,而是!運(yùn)算符的嵌套作用。!在C語(yǔ)言中叫邏輯非運(yùn)算符,是一種條件運(yùn)算符。

		

語(yǔ)法形式:!(條件)

其中的條件如果是false,則最終整個(gè)表達(dá)式為true;反之則為false,bug菌提醒一句:要與~進(jìn)行區(qū)分,~是按位取反,很多初學(xué)者容易混淆。

		

語(yǔ)法形式:!!(條件)

所以如上表達(dá)式就是兩個(gè)!的嵌套形式。當(dāng)然如果你想項(xiàng)目代碼中變得無(wú)可替代,可以繼續(xù)如下操作:
語(yǔ)法形式:!!!......!!(條件)
前提是你要自己能看懂。那么回到!!,該操作所達(dá)到的效果便是條件邏輯與最終表達(dá)式的邏輯結(jié)果保持一致:

		

!!(false)==false !!(非false)==true

而對(duì)于大部分編譯器false對(duì)應(yīng)的是0,而true對(duì)應(yīng)的是1,所以很多同志拿著邏輯結(jié)果參與數(shù)值運(yùn)算。

		

offset=len/64+!!(len%64);

該表達(dá)式的用處也非常清楚了,當(dāng)len不能被64整除,則:

		

offset=len/64+1;

獲得正確的數(shù)據(jù)分組個(gè)數(shù),這代碼應(yīng)該是來(lái)源于存儲(chǔ)或者通信中。但bug菌覺(jué)得,盡量還是不要操作:邏輯和數(shù)值運(yùn)算最好是分開(kāi),以增加代碼的可讀性和可移植性。

2

還有個(gè)用處

最早看到這種處理方式是在判斷一個(gè)引腳的高底電平上:


		

u8GPIOLevel= !!(GPIOA_Data & PIN_2);

!!在其中的作用跟之前是一樣的,使得表達(dá)式的數(shù)據(jù)結(jié)果與條件中的邏輯保持一致,便可以直接獲得結(jié)果。END 審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    183

    文章

    7645

    瀏覽量

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

    關(guān)注

    30

    文章

    4972

    瀏覽量

    74097

原文標(biāo)題:C代碼中看到"!!",捻了把汗~

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    在Keil中進(jìn)行C代碼與匯編代碼的混合編程

    1. 在 C 代碼中調(diào)用匯編程序代碼C 代碼中調(diào)用匯編程序中函數(shù)的方法: 第一步,在 C
    發(fā)表于 01-23 06:36

    講解C語(yǔ)言代碼的實(shí)現(xiàn)過(guò)程

    重點(diǎn)講解C語(yǔ)言代碼的實(shí)現(xiàn)過(guò)程,算法的C語(yǔ)言實(shí)現(xiàn)過(guò)程具有一般性,通過(guò)PID算法的C語(yǔ)言實(shí)現(xiàn),可以以此類(lèi)推,設(shè)計(jì)其它算法的C語(yǔ)言實(shí)現(xiàn)。 第一步:
    發(fā)表于 01-21 07:58

    c語(yǔ)言中的代碼優(yōu)化

    寫(xiě)好的代碼嵌入到當(dāng)前程序,不會(huì)產(chǎn)生函數(shù)調(diào)用,因此僅僅是占用了空間,在頻繁調(diào)用同 一個(gè)宏的時(shí)候,該現(xiàn)象尤為突出。 舉例以下: 方法C: #define bwMCDR2_ADDRESS 4
    發(fā)表于 01-12 09:45

    CS32L010系列能否支持串口的發(fā)送和接收中斷單獨(dú)配置?不同中斷的中斷優(yōu)先級(jí)如何設(shè)置?

    1、串口能否配置成阻塞式發(fā)送和中斷式接收。 2、不同中斷的中斷優(yōu)先級(jí)如何設(shè)置?我在開(kāi)啟中斷函數(shù)代碼中看到說(shuō)中斷優(yōu)先級(jí)配置需要先調(diào)用NVIC_PriorityGroupConfig()函數(shù),但此函數(shù)無(wú)定義,全局搜索不到。
    發(fā)表于 12-10 18:46

    rt-thread studio 編輯代碼時(shí),使用ctrl+c復(fù)制代碼會(huì)閃退怎么解決?

    rt-thread studio 編輯代碼時(shí),使用ctrl+c復(fù)制代碼會(huì)閃退?
    發(fā)表于 08-29 06:36

    為什么當(dāng)微控制器(MCU)用作I2C從機(jī)時(shí),I2C_SCL連續(xù)接收數(shù)據(jù)時(shí)會(huì)出現(xiàn)時(shí)鐘拉伸?

    為什么當(dāng)微控制器(MCU)用作I2C從機(jī)時(shí),I2C_SCL連續(xù)接收數(shù)據(jù)時(shí)會(huì)出現(xiàn)時(shí)鐘拉伸?
    發(fā)表于 08-26 08:05

    為什么當(dāng)微控制器 (MCU) 用作 I2C 從機(jī)時(shí),I2C_SCL在接收連續(xù)數(shù)據(jù)時(shí)會(huì)出現(xiàn)時(shí)鐘拉伸?

    為什么當(dāng)微控制器 (MCU) 用作 I2C 從機(jī)時(shí),I2C_SCL在接收連續(xù)數(shù)據(jù)時(shí)會(huì)出現(xiàn)時(shí)鐘拉伸
    發(fā)表于 08-21 06:32

    Perforce QAC產(chǎn)品簡(jiǎn)介:面向C/C++的靜態(tài)代碼分析工具(已通過(guò)SO 26262認(rèn)證)

    Perforce QAC專(zhuān)為C/C++開(kāi)發(fā)者打造,支持多種編碼規(guī)范、功能安全標(biāo)準(zhǔn)(ISO 26262)等,廣泛用于汽車(chē)、醫(yī)療、嵌入式開(kāi)發(fā)領(lǐng)域,可幫助快速識(shí)別關(guān)鍵缺陷、提升代碼質(zhì)量、實(shí)現(xiàn)合規(guī)交付。
    的頭像 發(fā)表于 07-10 15:57 ?1335次閱讀
    Perforce QAC產(chǎn)品簡(jiǎn)介:面向<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++的靜態(tài)<b class='flag-5'>代碼</b>分析工具(已通過(guò)SO 26262認(rèn)證)

    請(qǐng)問(wèn)在CYBLE-333074-EVAL-M2B中SPI應(yīng)使用哪些引腳?

    您好,我正在使用模塊 CYBLE-333074-EVAL-M2B ,我在數(shù)據(jù)表中看到可以使用 SPI,我想通過(guò) SPI 將模塊 CYBLE-333074-EVAL-M2B 與外部閃存通信 ,您能
    發(fā)表于 07-02 06:13

    使用 CY4500 EZ-PD 協(xié)議分析器實(shí)用程序來(lái)調(diào)試USB類(lèi)型C應(yīng)用程序,無(wú)法在 “詳細(xì)信息” 窗口中找到 \" HPD 狀態(tài)\"怎么解決?

    ; HPD 狀態(tài)\"。 我怎樣才能在詳細(xì)信息窗口中看到 \" HPD 狀態(tài)\"解碼結(jié)果行?
    發(fā)表于 05-28 07:05

    FX2 I2C代碼掛起的原因?

    邏輯分析儀中看到 SCL 和 SDA)。 當(dāng)我將MULTICH_CONNECT_PCB SDL 線連接到 ESP8266 時(shí),代碼掛起。 說(shuō)明 ; 1. 連接正確 . 2. FX2 KIT_A2G_TC387_MOTORCTR在 SCL 和 SDA 線上都有上拉 (2.2
    發(fā)表于 05-26 08:09

    當(dāng)CY7C65215在兩個(gè)通道上配置為 SPI 和 I2C 時(shí),能否在Linux系統(tǒng)中看到兩個(gè)設(shè)備?

    我的客戶想知道,當(dāng) CY7C65215 在兩個(gè)通道上配置為 SPI 和 I2C 時(shí),他能否在 Linux 系統(tǒng)中看到兩個(gè)設(shè)備。
    發(fā)表于 05-26 06:27

    fx3 uvc uart組合代碼在usb 2.0中不起作用怎么解決?

    大家好,需要幫助/建議, 我已經(jīng)在 fx3 中將 uvc 和 cdc(uart)代碼組合在一起。 但是當(dāng)我連接 USB 3.0 電纜時(shí),我只能在 Windows 中看到 Fx3 和 COM 端口
    發(fā)表于 05-15 07:32

    深入理解C語(yǔ)言:C語(yǔ)言循環(huán)控制

    C語(yǔ)言編程中,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進(jìn)入無(wú)限循環(huán),C語(yǔ)言提供了多種循環(huán)控制語(yǔ)句,如break、continue和goto,用于
    的頭像 發(fā)表于 04-29 18:49 ?2098次閱讀
    深入理解<b class='flag-5'>C</b>語(yǔ)言:<b class='flag-5'>C</b>語(yǔ)言循環(huán)控制

    基于STM32C8T6控制,F(xiàn)SR402壓力傳感器+oled屏幕顯示代碼

    基于STM32C8T6控制,F(xiàn)SR402壓力傳感器+oled屏幕顯示代碼
    發(fā)表于 04-14 15:06 ?8次下載