标题: [C语言编程]千万注意,不要轻易把变量定义和赋值搞在一起 [打印本页]
作者: yonko 时间: 2020-2-23 09:33
标题: [C语言编程]千万注意,不要轻易把变量定义和赋值搞在一起
最近开发编写一个测试设备的程序(C程序),在定义一个全局变量的时候,之前我喜欢在定义的时候直接赋值,如这样:
unsigned char a=0;//这里直接给变量a定义并赋值
void main_function()
{
//在这里使用a
...
}
不过这样做的时候却有时可能要出问题,比如可能导致在后期使用的时候a可能不等于0。最近就被这个故障烦了好久,起初检查好几遍了都无头绪,最后用串口把变量a传出显示才发现,a的数值变了,
a咋会变呢?你打si也想不到它会变心,
最后改为如下面的定义和赋值单独进行,问题才得以解决,
unsigned char a;//定义a
void main_function()
{
a=0;//给a赋值
...
}
其实之前按照前一种方式做的也都没有问题,不过最近又修改了不少代码才出了故障。有时候看似省了一行代码,其实导致了不可预见的不稳定的bug,还是应当按照规范来,毕竟,找出这个问题在哪里实在太不容易了,要花很多时间和尝试。
更多干货,尽在微信公众号:yonkotech
作者: jmkl128 时间: 2020-2-26 08:19
不错,谢谢分享
作者: hz_dyg 时间: 2021-5-13 15:55
啊?误导别人!
作者: wuguojiao 时间: 2021-5-17 10:47
第一次用东软单片机也遇到这问题,找了几天才解决。
作者: hz_dyg 时间: 2021-5-18 13:12
这个最大的可能是,C51编译器共享变量导致。
作者: AAA_MCU 时间: 2021-6-3 15:55
编译器问题,或者是你程序地方有修改变量,标准c不会出现这种情况的;
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |