求助:超奇怪的问题,if判断语句出错

水晶烟灰缸 2010-05-31 10:58:24
char AT_TYPE_BUF=0x00; //全局变量
.
.
.
void RESPONSE_GPRS(unsigned char s_char)
{
AT_TYPE_BUF+=s_char;

switch(s_char)
{
case 0x0A:
switch(AT_INDEX)
{
case 0x01: //响应AT,返回值OK
if (AT_RESP_COT==0x01&&AT_TYPE_BUF==0xB1) //这里出错
{
.
.
.
break;
}
}
break;
}
}

我监视了AT_TYPE_BUF变量,值确实是0xB1,AT_RESP_COT变量是0x01,但是就是进不了判断语句里面去,难道是灵异事件??
...全文
139 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjf30366 2010-05-31
  • 打赏
  • 举报
回复
呵呵,一个带符号,一个不带符号
水晶烟灰缸 2010-05-31
  • 打赏
  • 举报
回复
晕,为什么改成unsigned char 就可以了,能解释一下原因么,吃饭回来结贴
zjf30366 2010-05-31
  • 打赏
  • 举报
回复
你把变量类型改成unsigned char
小楫轻舟 2010-05-31
  • 打赏
  • 举报
回复

#define LVALUE = 0xB1
if (AT_TYPE_BUF == LVALUE)

试试
zjf30366 2010-05-31
  • 打赏
  • 举报
回复
溢出了
zjf30366 2010-05-31
  • 打赏
  • 举报
回复
unsigned char AT_TYPE_BUF=0x00; //全局变量
水晶烟灰缸 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lightboat09 的回复:]
你把前面一个条件去掉试试
if (AT_TYPE_BUF==0xB1)
[/Quote]

就是这个进不来,但是AT_TYPE_BUF的值确实是0xB1
小楫轻舟 2010-05-31
  • 打赏
  • 举报
回复
0x没写错吧,别写成a,w,o的o了
小楫轻舟 2010-05-31
  • 打赏
  • 举报
回复
你把前面一个条件去掉试试
if (AT_TYPE_BUF==0xB1)
zjf30366 2010-05-31
  • 打赏
  • 举报
回复
void RESPONSE_GPRS(char s_char)试试可以不
水晶烟灰缸 2010-05-31
  • 打赏
  • 举报
回复
这个方法我试过了,问题是
AT_TYPE_BUF这个变量我的监视结果是0xB1
但是
AT_TYPE_BUF==0xB1 的监视结果是0

问题就在这里
小楫轻舟 2010-05-31
  • 打赏
  • 举报
回复
你写成这样看看,
if ((AT_RESP_COT==0x01)&& (AT_TYPE_BUF==0xB1 ))
flydown 2010-05-31
  • 打赏
  • 举报
回复
表达式AT_TYPE_BUF==0xB1值为1才会进入啊!
水晶烟灰缸 2010-05-31
  • 打赏
  • 举报
回复
而且在整个程序中没有同名的变量
水晶烟灰缸 2010-05-31
  • 打赏
  • 举报
回复
程序已经运行到if这里来了,后面的变量AT_TYPE_BUF我监视的结果就是 0xB1,但是就是进不了if语句里面去,我又监视了表达式AT_TYPE_BUF==0xB1,其值为0,

这个才真的是灵异事件
flydown 2010-05-31
  • 打赏
  • 举报
回复
switch嵌套了,不知道进入到第二层的switch语句没有?
向立天 2010-05-31
  • 打赏
  • 举报
回复
看看是不是有同名的宏或者变量把这个位置覆盖了
thinkli 2010-05-31
  • 打赏
  • 举报
回复
不可思议,等待楼主揭晓答案。
Peng_Chen1988 2010-05-31
  • 打赏
  • 举报
回复
AT_RESP_COT==0x01&&AT_TYPE_BUF==0xB1

后面那个变量呢?是什么值啊?你测了没?

69,369

社区成员

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

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