电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
为什么keil里连着对变量赋值两次直接执行第二次
已解决
73482
个问题
已帮助
5993
位优秀工程师
为什么keil里连着对变量赋值两次直接执行第二次
2cb6f86ee70a1003
2019-10-24
浏览量:603
for(;ram_address_back <= Ram_address; ram_address_back++)
{
if(*ram_address_back==0x00000000)
{
*ram_address_back =0x55555555;
back=*ram_address_back;
back=0x00000000;
}
else {RAM_check_flag=FALSE;break; }
}
按步运行仿真back=*ram_address_back这个语句不运行,直接运行back=0x00000000;但我如果去掉back=0x00000000这条语句的话back=*ram_address_back;可以运行
显示全部
其他
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答
数量:
3
yhj416606438
编译器优化了,因为你上面那条语句是多余的,下面back还是赋值为0,所以编译器提高执行效率把上面一句屏蔽了,你可以把优化等级设置最低就可以了,这样他每句都会执行
发布于
2019-10-24
举报
评论 0
0
0
发布
细风
编译器优化了,如果不想被优化,变量初始化时加上volatile。
发布于
2019-10-25
举报
评论 0
0
0
发布
apleilx
编译器会优化到无意义的语句,第二句结果覆盖第一句,前面就没用了。 想强制执行, 定义black时前面加 volatile 。
发布于
2019-10-25
举报
评论 0
0
0
发布
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
为什么keil里连着对变量赋值两次直接执行第二次
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: