一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

進入正片:

1

??!操作

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

		

語法形式:!(條件)

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

		

語法形式:!!(條件)

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

		

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

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

		

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

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

		

offset=len/64+1;

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

2

還有個用處

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


		

u8GPIOLevel= !!(GPIOA_Data & PIN_2);

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

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

    關(guān)注

    180

    文章

    7632

    瀏覽量

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

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70758

原文標題:C代碼中看到"!!",捻了把汗~

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    FX2 I2C代碼掛起的原因?

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

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

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

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

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

    代碼加密、源代碼防泄漏c/c++與git服務(wù)器開發(fā)環(huán)境

    代碼加密對于很多研發(fā)性單位來說是至關(guān)重要的,當然每家企業(yè)的業(yè)務(wù)需求不同所用的開發(fā)環(huán)境及開發(fā)語言也不盡相同,今天主要來講一下c++及git開發(fā)環(huán)境的源代碼防泄密保護方案。企業(yè)源代碼泄密
    的頭像 發(fā)表于 02-12 15:26 ?528次閱讀
    源<b class='flag-5'>代碼</b>加密、源<b class='flag-5'>代碼</b>防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c</b>++與git服務(wù)器開發(fā)環(huán)境

    分析C語言代碼結(jié)構(gòu)的設(shè)計問題

    來分析一個C語言代碼結(jié)構(gòu)的設(shè)計問題。 這段代碼,使用了兩次malloc,分別給 p1 和 p2 申請了內(nèi)存。用完后,內(nèi)存釋放,防止內(nèi)存泄漏。 大家覺得,這樣的代碼設(shè)計有沒有問題。
    的頭像 發(fā)表于 02-11 09:31 ?373次閱讀

    單片機學(xué)習(xí)—C51源代碼和Proteus仿真文件

    單片機學(xué)習(xí)—C51源代碼和Proteus仿真文件.zip, 有各種例子
    發(fā)表于 02-10 13:46 ?1次下載

    AN-840: 通過I2C接口更新代碼

    電子發(fā)燒友網(wǎng)站提供《AN-840: 通過I2C接口更新代碼.pdf》資料免費下載
    發(fā)表于 01-15 16:04 ?0次下載
    AN-840: 通過I2<b class='flag-5'>C</b>接口更新<b class='flag-5'>代碼</b>

    EE-132:使用VisualDSP將C代碼和數(shù)據(jù)模塊放入SHARC存儲器中

    電子發(fā)燒友網(wǎng)站提供《EE-132:使用VisualDSP將C代碼和數(shù)據(jù)模塊放入SHARC存儲器中.pdf》資料免費下載
    發(fā)表于 01-07 13:55 ?0次下載
    EE-132:使用VisualDSP將<b class='flag-5'>C</b><b class='flag-5'>代碼</b>和數(shù)據(jù)模塊放入SHARC存儲器中

    TSW14J57EVM如何使用DLL庫進行連續(xù)采樣操作?

    C++代碼來對HSDC進行控制,但代碼中沒有關(guān)于連續(xù)采樣的說明和操作,希望貴公司能給hsdc軟件中連續(xù)采樣的運行邏輯或者給出一個使用dll
    發(fā)表于 11-22 08:01

    黑芝麻智能武當C1200家族連續(xù)摘得行業(yè)權(quán)威獎項

    隨著C1200家族產(chǎn)品的合作解決方案名單不斷加長,C1200家族連續(xù)摘得行業(yè)權(quán)威獎項,產(chǎn)品實力與產(chǎn)業(yè)價值廣受認可。
    的頭像 發(fā)表于 11-18 17:16 ?1065次閱讀

    TMS320LF240x DSP的C語言和匯編代碼快速入門

    電子發(fā)燒友網(wǎng)站提供《TMS320LF240x DSP的C語言和匯編代碼快速入門.pdf》資料免費下載
    發(fā)表于 10-18 10:14 ?1次下載
    TMS320LF240x DSP的<b class='flag-5'>C</b>語言和匯編<b class='flag-5'>代碼</b>快速入門

    hex文件如何查看原c語言代碼

    直接將 .hex 文件轉(zhuǎn)換回原始的 C 語言代碼是不可能的,因為 .hex 文件是二進制文件,它包含了單片機程序編譯后的機器碼,這些機器碼與原始的 C 語言代碼在結(jié)構(gòu)和表達上存在巨大的
    的頭像 發(fā)表于 09-02 10:37 ?4958次閱讀

    C2000 DCSM ROM代碼片段/ROP漏洞

    電子發(fā)燒友網(wǎng)站提供《C2000 DCSM ROM代碼片段/ROP漏洞.pdf》資料免費下載
    發(fā)表于 08-28 09:39 ?0次下載
    <b class='flag-5'>C</b>2000 DCSM ROM<b class='flag-5'>代碼</b>片段/ROP漏洞

    在XTR111的手冊中看到靜態(tài)功耗的值,想請問下工作時的功耗如何計算?

    在XTR111的手冊中看到靜態(tài)功耗的值,想請問下工作時的功耗如何計算?謝謝。
    發(fā)表于 08-14 06:11

    ModusToolbox 3.2在c代碼中包含c++代碼的正確步驟是什么?

    使用 ModusToolbox 3.2 我有一個用純 C 語言編寫的 XMC4700 項目。 我正在嘗試添加一些 C++ 函數(shù),并將其合并到我的原始代碼中。 我可以構(gòu)建獨立的 .cpp/.hpp
    發(fā)表于 07-23 08:21