找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3192|回复: 4
收起左侧

非常奇怪,C语言变量赋值失败

[复制链接]
ID:224104 发表于 2020-2-9 11:34 | 显示全部楼层 |阅读模式
我本想仿真测试一下两种变量右移运算需要多少时间,
结果发现赋值都出问题了,两个变量分别为是16位uint和8位uchar
软件调试、在线仿真都失败了。
提问1.png

42、43 和 45、46四条语句被莫名其妙跳过了(强制断点都不行)
赋值的数值也没有超出uint和uchar的规定范围
提问2.png

汇编窗口发现编译器根本就没有编译这几条语句,直接当做注释跳过了
提问4.png

变量监视器也显示它们没有被赋值
提问3.png



我之用范例程序做修改都没出过这种问题,这次很奇怪,求大神解答。

回复

使用道具 举报

ID:168996 发表于 2020-2-9 12:33 | 显示全部楼层
被编译器优化掉了,如果这些语句实在需要,可以降低优化级别试试:Option for target\c51\code optimization,默认可能是8,可以降低(比如3)试试
回复

使用道具 举报

ID:235200 发表于 2020-2-9 13:28 | 显示全部楼层
应该是程序被优化了
回复

使用道具 举报

ID:224104 发表于 2020-2-9 13:45 | 显示全部楼层
banalsheep 发表于 2020-2-9 12:33
被编译器优化掉了,如果这些语句实在需要,可以降低优化级别试试:Option for target\c51\code optimizatio ...

谢谢,问题解决了
回复

使用道具 举报

ID:224104 发表于 2020-2-9 13:46 | 显示全部楼层
csmyldl 发表于 2020-2-9 13:28
应该是程序被优化了

确实如此,只做了移位操作但没有使用,被优化掉了,多谢!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表