之前在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的配置有問題,我就又...