在C语言中定义恰当的变量类型是十分重要的,其重要性包括一下几方面
- 影响逻辑的正确性,不合理的数据类型可能导致数据内容丢失,例如使用了unsigned char 类型存储了unsigned int 变量的值。
- 影响存储空间的大小,char ,int ,long ,float,double 类型占用的空间不同,如果在一个资源紧张的51 系统上都定义的int 类型的变量,甚至log 型变量。可能导致RAM 空间紧张。
- 影响程序的执行效率。如果把int 类型的算术运算就可以完成的操作错误的用成了有float 类型或者double 类型的参与的运算,则执行效率会大打折扣。
第2,3点可能在PC 系统不用考虑,但在嵌入式系统中则显得比较重要,需要引起大家足够的重视。
对于第一点很多同志能够引起重视,因为不重视的话软件会可能因为bug 跑不起来。对于第2,3点可能部分同志还没有认识到,以下将借助一个简单的例子来看看实际的情况。
Code 1:
这段程序编译出来的大小是5288.
我们稍作修改,将output = output/1.8; --->output = output/1.8f;
编译之后,程序大小为4452 字节。
为什么有836 字节的差异,这是因为在实例代码除1.8 的操作默认当作了double 类型变量进行了处理,因此程序调用了double 类型的库函数。修改后在1.8 后加了f 类型的声明,将1.8 处理为float 类型的变量,程序会调用float 类型的函数库。
这两个库在运算时间及占用空间方面均存在较大差异,如下所示:
所以在满足精度的情况下,少用double 类型的变量,尽量使用float 类型的变量,在合适的位置加上float 类型的声明。
有兴趣的同志可以研究下float 类型和double 在占用时间上差异,相信你会印象深刻。



