|
发表于 2021-5-10 18:44:51
|
显示全部楼层
按照ANSI C的规范,所有不做初始化的变量都是0,但是在单片机里,复位以后RAM全部都是随机值,所有变量清零是在一小段你看不到的启动代码里实现的(其实你看得到,得看编译器输出的汇编中间文件,或者修改编译器有关变量保留的设置)。所以说这就造成一个问题,如果你没有保持变量使用之前先赋初值的好习惯,可能在某些意外情况下(比如删除了启动代码初始化相关配置,或软复位未被清空,或者编译器优化问题)而导致的数值超出允许的界限,有可能引起严重问题。
所以说初值只要你对他进行了人工初始化的操作,不要再担心他会是随机值。
第二个问题属于原子操作类的问题,建议百度一下。在这里说似乎就太长了,也没必要 |
|