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了