打印
[PIC®/AVR®/dsPIC®产品]

今天发现单片机程序不收控制,条件不满足的情况下,居然执行语句。求助啊。

[复制链接]
1580|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
woshiwwy16|  楼主 | 2014-3-5 17:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先介绍系统环境,MPLAB8.7,MCC18编译器,Project包含所必要的头文件和LINKER文件。
举例:我在Watch窗口中查看变量OutsideTemp=336
但是程序中有if(OutsideTemp<240)条件下的语句却执行了。这应该是不可能的啊,求助。
同样的情况,当变量OutsideTemp=260
但是程序却执行if(OutsideTemp>380)条件下的语句,这也是不能的,求解啊。
沙发
弓长月月鸟| | 2014-3-5 20:30 | 只看该作者

使用特权

评论回复
板凳
yewuyi| | 2014-3-5 23:05 | 只看该作者
1、C编译器具有优化功能,即使你关闭了优化,其依然具备基本的优化能力。
2、编译器优化功能为了降低代码数量,会自动共用一些具有共用特性的代码。

使用特权

评论回复
地板
woshiwwy16|  楼主 | 2014-3-6 09:32 | 只看该作者
yewuyi 发表于 2014-3-5 23:05
1、C编译器具有优化功能,即使你关闭了优化,其依然具备基本的优化能力。
2、编译器优化功能为了降低代码数 ...

请详细点说呗,能告诉我为什么会这样违反常理

使用特权

评论回复
5
yewuyi| | 2014-3-6 16:01 | 只看该作者
woshiwwy16 发表于 2014-3-6 09:32
请详细点说呗,能告诉我为什么会这样违反常理

你所谓的常理只是你个人以为的‘常理’,你个人以为的‘常理’根本不是真正的‘常理’

使用特权

评论回复
6
ocon| | 2014-3-7 09:57 | 只看该作者
貌似变量类型错误,所以超过255就出错。

使用特权

评论回复
7
兰天白云| | 2014-3-7 16:05 | 只看该作者
编译器没这么傻
1、查变量类型
2、检查代码
3、单步运行,一只眼盯着变量,一只眼盯着代码

使用特权

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

本版积分规则

2

主题

3

帖子

0

粉丝