打印

谁闲着呢?看一个很奇怪的C问题(已解决)

[复制链接]
1951|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一朝成名|  楼主 | 2007-10-11 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近做个东西写了个小程序但是就出现了费解的问题.仅仅是改动下面的几句
程序就出现非常不正常的现象,看不出问题出那里了.....只有把if(a-b >1)改为if(--a != b)(后面有a的修正a++)
程序才能正常运行.....很是纳闷.....这俩句子没区别吧???


if(a > b)
  {
   if(a-b>1)    //如果把前面改做if(--a != b)后面再加个a++程序正常运行,就是为了   让a 比b大于一以上一下的程序才执行. 
     {                  
      ......
     }
   }
if(a<b)
  {                 
   if(b-a>1)           //跟上面同样道理
     {
      ......
      }
   }


KEIL可能直接把前后两个条件直接优化到一起了,这样出的错

相关帖子

沙发
dld2| | 2007-10-11 09:48 | 只看该作者

呵呵,最明显的不同

a改变了

使用特权

评论回复
板凳
duanhnhy| | 2007-10-11 09:50 | 只看该作者

RE

--a!=b  a值已经被改变
a-b>1   a值不变

使用特权

评论回复
地板
ayb_ice| | 2007-10-11 09:54 | 只看该作者

没有搞明白就怪

使用特权

评论回复
5
一朝成名|  楼主 | 2007-10-11 10:37 | 只看该作者

这个我知道的呵呵

没说明白的

在下面我加了a++的呵呵

使用特权

评论回复
6
一朝成名|  楼主 | 2007-10-11 10:42 | 只看该作者

如果想a比b大于2再运行程序的话

我用if(a-b>2)
同样出现了跟a-b>1的同样的情况
就是程序跑的不正常

使用特权

评论回复
7
computer00| | 2007-10-11 10:44 | 只看该作者

老兄,大于和不等于可不一样啊,小于也可以不等于啊

使用特权

评论回复
8
一朝成名|  楼主 | 2007-10-11 10:46 | 只看该作者

俺在前面有if(a>b)的呵呵

逻辑上没有问题的吧

怎么就是出错呢

使用特权

评论回复
9
zssmcu| | 2007-10-15 14:23 | 只看该作者

很可能是你前面定义的a,b不是同类型的

比如a是signed char,b是unsigned char

使用特权

评论回复
10
xianglin| | 2007-10-15 14:37 | 只看该作者

ding

看功能是否实现不就的了

使用特权

评论回复
11
yewuyi| | 2007-10-15 16:51 | 只看该作者

是不是优化出的错,关掉优化就知道了……

哈哈,看着不大象是优化的事情啊

使用特权

评论回复
12
古道122| | 2007-10-16 11:14 | 只看该作者

假设一下

设a=4.5,b=4,那么修改后能执行下去,不改就不能执行了

使用特权

评论回复
13
一朝成名|  楼主 | 2007-10-16 21:20 | 只看该作者

想写个简单的吧还不行

误导大家了 A B都是 uchar

看出来了是优化的错误 优化8.9就出错了  但是不知道为什么呢

使用特权

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

本版积分规则

100

主题

3299

帖子

5

粉丝