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

t514901334 2013-09-16 10:45:28
char receive[10] ="\x12\x34\xFF\x56\x78";

if(receive[2] == 0xFF)//为什么该式为假
{
printf("ok\n");//无ok输出。。。?
}
...全文
79 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
图灵狗 2013-09-16
  • 打赏
  • 举报
回复
改为if((unsigned char)receive[2] == 0xFF)
引用 楼主 t514901334 的回复:
char receive[10] ="\x12\x34\xFF\x56\x78"; if(receive[2] == 0xFF)//为什么该式为假 { printf("ok\n");//无ok输出。。。? }
worldy 2013-09-16
  • 打赏
  • 举报
回复
char 改为 unsigned char
relaxisland 2013-09-16
  • 打赏
  • 举报
回复
因为 0xFF默认是 int型 所以 receive[2] 从char 提升成int后,进行比较操作 提升到int 是0xFFFFFFFF 即-1 因此不等于0x000000FF,即256 解决办法可以把char数组声明成unsigned char 或者把0xFF强转成 char后进行比较

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧