1樓:
1.state = !!button->adc_state;
前面為什麼有兩個!! ?
答:"!" 是邏輯運算子,表示非。
當被取反的值非零,運算結果為 0(假) 。如 ! 10 = 0;
當被取反的值為零,運算結果為 1 (真)。如 ! 0 = 1。
兩個 "!!" 其實是取兩次反,它和乙個"!" 也沒有的【邏輯效果】是一樣的。但最終的值會不一樣。
也就是原來為真的(不為零,【不一定是 1】 ),取兩次反後還是真的(運算結果【一定為 1】)
也就是原來為假的(為零),取兩次反後還是假的(運算結果為 0)。
state = !!button->adc_state; 語句中,如果 :
button->adc_state = -2, state = 1;
button->adc_state = -1, state = 1;
button->adc_state = 1, state = 1;
button->adc_state = 2, state = 1;
button->adc_state = 0, state = 0;
....
state 的取值範圍是固定的!!!只有 0 和 1 !!!
state = button->adc_state; 語句中,如果 :
button->adc_state = -2, state = -2;
button->adc_state = -1, state = -1;
button->adc_state = 1, state = 1;
button->adc_state = 2, state = 2;
button->adc_state = 0, state = 0;
....
state 的取值範圍是不固定的!!!
button->desc ?: "keys"
這裡有個 c 語言裡面的唯一的【三目運算子】 "?: " 。所謂「三」目,也就是可以在這個運算子中填入三個表示式: 表示式1 ? 表示式2 : 表示式3
含義是:如果【表示式1】 的值是真,整個表示式的值就是【表示式2】 的值;否則,整個表示式的值是【表示式3】的值。
button->desc ?: "keys" 中,
表示式1:button->desc
表示式2:空表示式
表示式3:"keys"
2樓:匿名使用者
兩個!就是反了再反, 根據 abc_state的值, 結果是0或者1. 不是完全沒意義(因為原本的state可能是非0非1的某個數)但也確實不是很有意義
看看?:操作符把
3樓:no7楓葉
貌似我學c的時候沒遇到過
c語言的問題,C語言基本問題
include void main 改錯第一個,scanf後要有 for迴圈裡的是分號,其餘的不想做,太多了 樓主,太多了吧 3 int a if ch else a 0 printf d a 改錯第4個 sum應定義為float 5 i 10 if前加else 喜羊羊 include stdio....
C語言的問題,C語言基本問題
我先把運算符號解釋一下你就會做了 讀作 邏輯或。屬於二元運算,當且僅當兩個運算量的值都為 假 時,運算結果為 假 否則為 真 對於邏輯或運算,如果第乙個運算元被判定為 真 系統不再判定或求解第二運算元。讀作 邏輯與。屬於二元運算,當且僅當兩個運算量的值都為 真 時,運算結果為 真 否則為 假 對於邏...
關於c語言的基礎問題,C語言基本問題
三天打魚 是三元運算 條件?成立返回這個 不成立返回這個x大於10條件不成立所以返回x 10 結果是0w z 或運算 由於前面的w不為0 所以直接返回結果1 而後面的z 不執行 z值不變 w z w取反大於z 的優先順序高 所以先取反w w不等於0 所以取反結果是0 而0不大於z所以返回0 w z ...