兩個C的基本問題,請指教

時間 2022-07-11 06:30:03

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 ...