首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-09-17 
简单c语言问题 win8vc6.0环境 char receive[10] \x12\x34\xFF\x56\x78if(receive[2] 0xFF)//为什么

简单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输出。。。?
}

热点排行