jianhong_wu 发表于 2017-3-5 15:31:55

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

本帖最后由 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个例子,发现结论是不确定的。截图如下:
第一种:在不删除某行代码的情况下:




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




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





页: [1]
查看完整版本: 全局变量在定义的时候,它的初始化操作会增加代码容量吗?已解答。