独闷闷网

 找回密码
 立即注册
搜索
查看: 2716|回复: 0
打印 上一主题 下一主题
收起左侧

[原创] 全局变量在定义的时候,它的初始化操作会增加代码容量吗?已解答。

[复制链接]
跳转到指定楼层
楼主
发表于 2017-3-5 15:31:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 jianhong_wu 于 2017-3-5 15:40 编辑

问:
全局变量在定义的时候,它的初始化操作会增加代码容量吗?


★坚鸿-深圳:
我在C51的编译环境下,得到的结论是:
(1)对于全局变量或者静态局部变量(带static关键字修饰),初始化都要多额外开销一点程序的ROM容量,unsigned char,unsigned int,unsigned long三种不同的数据类型,因为数据宽度不一样,unsigned char开销的最小,其次是unsigned int,开销最大的是unsigned long。每初始化一个变量,它们三个类型依次要额外多开销3字节,4字节,6字节。请大家看我的例子截图:全局初始化的时候(1618字节):


全局不初始化的时候(1615字节)



一个是1615,一个是1618,很明显是有区别的。


(2)对于在函数内部的普通局部变量的初始化,结论是不确定的。这方面我试了4个例子,发现结论是不确定的。截图如下:
第一种:在不删除某行代码的情况下:




第二种:在删除某行代码的情况下:




综合第一种和第二种分析,发现普通局部变量的初始化与不初始化的结论是矛盾的不确定的。





乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-5-2 21:07 , Processed in 0.183258 second(s), 20 queries .

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