char c[10000];
...........//省略n行代碼
if ( c[0] == 0xaa ) ............
編譯器說comparison is always false due to limited range of data type
于是把if括号裡表達式寫成(int)c[0] == 0xaa,就是先強制轉換再比較,但是編譯器還是提示上面的東西
不管它,直接運作,運作結果和預想的不一樣。。。。。。好吧,編譯器你赢了
于是寫了段測試代碼:
//===================================================
char c = 0xaa;
if ( (int)c == 0xaa ) printf("True"); else printf("False");
//===================================================
運作結果是False
換個類型:
//===================================================
char c = 0xaa;
if ( (unsigned int)c == 0xaa ) printf("True"); else printf("False");
//===================================================
結果還是False
實際上,(int)c的值是-86,而(unsigned int)c的值是4294967210,都不是0xaa
原因看另一篇日志吧。
最後我是這麼改的:
if ( c == (char) 0xaa ).........
ok了