读书人

简单c语言有关问题 win8 vc6.0环境

发布时间: 2013-09-17 13:35:59 作者: rapoo

简单c语言问题 win8 vc6.0环境
char receive[10] ="\x12\x34\xFF\x56\x78";

if(receive[2] == 0xFF)//为什么该式为假
{
printf("ok\n");//无ok输出。。。?
} c语言 if语句
[解决办法]
因为 0xFF默认是 int型
所以 receive[2] 从char 提升成int后,进行比较操作
提升到int 是0xFFFFFFFF 即-1 因此不等于0x000000FF,即256

解决办法可以把char数组声明成unsigned char

或者把0xFF强转成 char后进行比较

[解决办法]
char 改为 unsigned char
[解决办法]
改为if((unsigned char)receive[2] == 0xFF)

引用:
char receive[10] ="\x12\x34\xFF\x56\x78";

if(receive[2] == 0xFF)//为什么该式为假
{
printf("ok\n");//无ok输出。。。?
}

读书人网 >C语言

热点推荐