因為c語言中,所有非0值都表示「真」。所以!非0值 = 0,而!0 = 1。雙感嘆號!!作用就是非0值轉成1,而0值還是0.雙感嘆號!!是為了把"非0值"轉換成1,而0值還是0。!!不難理解,舉例:
!!(expression) 等價於!(!expression)。如果express是乙個指標,最終結果就是1.這樣!!(expression)可以給bool變數賦值了。
用法舉例:對於乙個判斷的函式如下,老的寫法可能是這樣:
- (bool)islaunched
如果使用!!,則是這樣
- (bool)islaunched
所以,本人覺得!!只是節省了**,如果是if語句可以不必要這麼寫,但是上面!!的寫法,確實節省了**的行數。
還有一些其他場景:比如乙個開關,當某個數值大於0的時候,就開啟,等於0的時候就關閉,使用!!可以一行**搞定。
類似這樣節省**行數的特別用法還有三目運算子省略中間表示式的寫法(exp1?:exp2)詳見這裡
javaScript 雙感嘆號用法
在偶爾看原始碼的過程中。看到有些判斷的用法是 var a if a 為什麼要用兩個感嘆號 呢?因為js 是弱型別,單純用乙個 感嘆號去轉義可能會發生不必要的錯誤 這是知乎上的某個比較好的總結 雙感嘆號才能真正的將他轉換成對應的boolean值,第乙個感嘆號是將其轉化成boolean型別的值,但是這一...
Linux的! 感嘆號
在echo hello world index.html時發現會回顯執行的命令,且index.html檔案中沒有 號 使用echo hello world index.html時發現連同 一起輸出 解決辦法,不使用雙引號,改用單引號echo hello world index.html 或者感嘆號後...
C C 雙嘆號 運算子
1 問題引入 在閱讀源 中ppu.cpp中發現如下 m bgpage static cast ctrl 0x10 m sprpage static cast ctrl 0x8 好奇此處 ctrl 0x10 為何採用了雙嘆號的格式,非非 豈不是沒有操作嗎,意義是什麼?2 解答 expression 等...