最近一直在居家辦公,原本對居家辦公還心存一絲幻想,想著把一天的工作提前做完,就可以留給自己更多的空間。
然而,當真正居家辦公,才體會到其中的心塞與無奈,客戶、售后電話的輪番轟炸、同事經(jīng)常找不到人......等諸多問題,可把我給整麻了
進入正片:1
!!操作
看到交流群里有朋友拋出一段C語言操作:
offset=len/64+!!(len%64);
這兩個連續(xù)的感嘆號把有些人給整蒙圈了,還有些朋友調侃道: !!表示語氣加重,事情非常緊急得盡快處理,可把我給整笑了。其實都是常規(guī)操作吧,只是這樣的寫法在正常的編碼過程中并不多見。首先這兩個!!并不是什么C語言新的關鍵字,而是!運算符的嵌套作用。!在C語言中叫邏輯非運算符,是一種條件運算符。語法形式:!(條件)
其中的條件如果是false,則最終整個表達式為true;反之則為false,bug菌提醒一句:要與~進行區(qū)分,~是按位取反,很多初學者容易混淆。語法形式:!!(條件)
所以如上表達式就是兩個!的嵌套形式。當然如果你想項目代碼中變得無可替代,可以繼續(xù)如下操作:
語法形式:!!!......!!(條件)
前提是你要自己能看懂。那么回到!!,該操作所達到的效果便是條件邏輯與最終表達式的邏輯結果保持一致:!!(false)==false !!(非false)==true
而對于大部分編譯器false對應的是0,而true對應的是1,所以很多同志拿著邏輯結果參與數(shù)值運算。offset=len/64+!!(len%64);
該表達式的用處也非常清楚了,當len不能被64整除,則:offset=len/64+1;
獲得正確的數(shù)據(jù)分組個數(shù),這代碼應該是來源于存儲或者通信中。但bug菌覺得,盡量還是不要操作:邏輯和數(shù)值運算最好是分開,以增加代碼的可讀性和可移植性。2
還有個用處
最早看到這種處理方式是在判斷一個引腳的高底電平上:
u8GPIOLevel= !!(GPIOA_Data & PIN_2);
!!在其中的作用跟之前是一樣的,使得表達式的數(shù)據(jù)結果與條件中的邏輯保持一致,便可以直接獲得結果。END 審核編輯 :李倩-
C語言
+關注
關注
180文章
7632瀏覽量
141709 -
代碼
+關注
關注
30文章
4900瀏覽量
70727
原文標題:C代碼中看到"!!",捻了把汗~
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
FX2 I2C代碼掛起的原因?
當CY7C65215在兩個通道上配置為 SPI 和 I2C 時,能否在Linux系統(tǒng)中看到兩個設備?
fx3 uvc uart組合代碼在usb 2.0中不起作用怎么解決?
源代碼加密、源代碼防泄漏c/c++與git服務器開發(fā)環(huán)境

分析C語言代碼結構的設計問題
TSW14J57EVM如何使用DLL庫進行連續(xù)采樣操作?
黑芝麻智能武當C1200家族連續(xù)摘得行業(yè)權威獎項
如何通過I2C加載TPS2388x SRAM和奇偶校驗代碼

hex文件如何查看原c語言代碼
C2000 DCSM ROM代碼片段/ROP漏洞

評論