标题: 非常奇怪,C语言变量赋值失败 [打印本页]

作者: guysxpf    时间: 2020-2-9 11:34
标题: 非常奇怪,C语言变量赋值失败
我本想仿真测试一下两种变量右移运算需要多少时间,
结果发现赋值都出问题了,两个变量分别为是16位uint和8位uchar
软件调试、在线仿真都失败了。


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


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


变量监视器也显示它们没有被赋值




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


作者: banalsheep    时间: 2020-2-9 12:33
被编译器优化掉了,如果这些语句实在需要,可以降低优化级别试试:Option for target\c51\code optimization,默认可能是8,可以降低(比如3)试试
作者: csmyldl    时间: 2020-2-9 13:28
应该是程序被优化了
作者: guysxpf    时间: 2020-2-9 13:45
banalsheep 发表于 2020-2-9 12:33
被编译器优化掉了,如果这些语句实在需要,可以降低优化级别试试:Option for target\c51\code optimizatio ...

谢谢,问题解决了
作者: guysxpf    时间: 2020-2-9 13:46
csmyldl 发表于 2020-2-9 13:28
应该是程序被优化了

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





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1