打印

在c51程序中遇到这样一个问题,请高手指教

[复制链接]
2058|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
siuhiong|  楼主 | 2011-7-4 22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我遇到这样一个问题,请高手指教
switch(IrStep)
  {     
   case 0x00:
              if((TH0>=0x2f)&&(TH0<=0x31))
               {
                IrStep=1;
                IrExt();
               }
              else
                IrEnd();
               break;
   case 0x05:
              if((TH0>=0x28)&&(TH0<=0x2a))
               {
                IrFull=1;
                IrEnd();
                IrStep=5;
               }
              else
                IrEnd();
               break;   
  }
当if((TH0>=0x2f)&&(TH0<=0x31))为假时,为什么程序跳到case 0x05里面的else后面,而不是跳到case 0x00里面的else后面?

相关帖子

沙发
心静自然凉| | 2011-7-5 07:47 | 只看该作者
1,你能确定IrStep == ,0x00吗?
2,前后两个else后面的程序都一样,你是如何知道程序跳到“case 0x00里面的else”的?
3,代码要规范,即使else后面只有一句,也要把括号加上。

使用特权

评论回复
板凳
123jj| | 2011-7-5 08:08 | 只看该作者
很正常,编译时将程序优化了,case 0x00里面的else后面 和 case 0x05里面的else后面 程序内容相同,合二为一了。

使用特权

评论回复
地板
ningling_21| | 2011-7-5 08:19 | 只看该作者
楼上正解...

使用特权

评论回复
5
siuhiong|  楼主 | 2011-7-5 11:41 | 只看该作者
1,你能确定IrStep == ,0x00吗?
2,前后两个else后面的程序都一样,你是如何知道程序跳到“case 0x00里面的else”的?
3,代码要规范,即使else后面只有一句,也要把括号加上。 ...
心静自然凉 发表于 2011-7-5 07:47

1.我可以确定IrStep==0x00.
2.设断点就可以看出程序怎么走。

使用特权

评论回复
6
sjssjssjs| | 2011-7-5 12:09 | 只看该作者
应该是编译器优化了,重选一下优化级别

使用特权

评论回复
7
siuhiong|  楼主 | 2011-7-6 11:45 | 只看该作者
很正常,编译时将程序优化了,case 0x00里面的else后面 和 case 0x05里面的else后面 程序内容相同,合二为一了。
123jj 发表于 2011-7-5 08:08

多谢指教

使用特权

评论回复
8
taoangel| | 2011-7-13 21:18 | 只看该作者
受教了 。。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

39

帖子

2

粉丝