找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2875|回复: 5
打印 上一主题 下一主题
收起左侧

[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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:67356 发表于 2020-2-26 08:19 | 只看该作者
不错,谢谢分享
回复

使用道具 举报

板凳
ID:298123 发表于 2021-5-13 15:55 | 只看该作者
啊?误导别人!
回复

使用道具 举报

地板
ID:881221 发表于 2021-5-17 10:47 | 只看该作者
第一次用东软单片机也遇到这问题,找了几天才解决。
回复

使用道具 举报

5#
ID:298123 发表于 2021-5-18 13:12 | 只看该作者
这个最大的可能是,C51编译器共享变量导致。
回复

使用道具 举报

6#
ID:739727 发表于 2021-6-3 15:55 | 只看该作者
编译器问题,或者是你程序地方有修改变量,标准c不会出现这种情况的;
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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