不能正常判斷按鍵函式中的Flag

2021-09-10 02:07:06 字數 900 閱讀 4123

之前在51微控制器裡面定義bit型別的變數是這樣:

bit flag = 0;
然後今天在32裡面寫:

static u8 key4_flag = 0;
然後我在後面進行判斷:

else if(keycode == 4)

else if(key4_flag == 0)

}

0000 0000->1111 1111-> 0000 0000->1111 1111...
我一直以為是:

0->1->0->1...
尬的一批。。。

所以就導致根本無法進入key4_flag == 1裡面的程式,因為1111 1111 != 1

我一直以為還是51裡面的bit型別,希望大家不要犯類似的錯誤,如果在32裡面定義u8型別的flag,並且直接使用取反運算子的話,一定要和0000 0000(或者是0)、1111 1111(不能是1)來進行判斷。

正確的判斷應該是這樣的:

else if(keycode == 4)

else if(key4_flag == 0x00)

}

如果是u16型別的flag,那麼就應該是判斷key4_flag == 0xffff

如果是u32型別的flag,那麼就應該是判斷key4_flag == 0xffffffff

服務不能正常啟動的原因判斷與分析

am or mobox 服務可能會出現啟動不了的現象,為了解決這個問題,我們需要對出現這個不能啟動的原因進行分析。比如 發現人員模型服務不能啟動 注意 這個裡面 服務顯示的是 服務端顯示名稱,所以可能與管理器列出的服務不太一樣,參考下面的對照 前面舉例是 人員模型服務 不能正常啟動,因此我們找到服務...

union中的成員不能有建構函式

最近在做專案的cta測試,快被折騰死了。專案中用到的開源庫alljoyn在編譯時報錯 in file included from target base alljoyn inc alljoyn message.h 36 0 from target base alljoyn inc alljoyn a...

FC6 中串列埠不能正常使用的原因與解決辦法

新安裝了個fc6,用來調我的sigmal 8260的板子,由於對xen感興趣,索興在安裝fc6時就將xen選上了,裝完後,感覺不錯,但是當用串列埠時就發現不能正常使用,因為我的pc只有乙個串列埠出來,即ttys0,可以用minicom正常開啟,但就是不能工作,後來想想可能是xen的配置有問題,我就又...