首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

effectiveC++中的一个疑问,该如何解决

2012-04-01 
effectiveC++中的一个疑问effective C++“条款2:尽力以const、enum、inline替换#define”中,有一段话:“此外对

effectiveC++中的一个疑问
effective C++“条款2:尽力以const、enum、inline替换#define”中,有一段话:
“此外对于浮点常量而言,使用常量(const)可能比使用#define导致较小的代码量,因为预处理器盲目的将ASPECT_RATION替换为其值,可能导致目标代码代码中出现多份1.653,若改用常量AspectRation绝不会出现相同的情况。”
例子是 #define ASPECT_RATION 1.653

我想问的是:为什么对于浮点数而言会出现这种情况,其他情况呢?比如我是用的整型int呢?这种情况下目标代码难道不会出现多份的数值?

希望各位大神不吝赐教。

[解决办法]
根据我的理解应该是会的,因为宏的机制只是简单的代替,肯定是要出现多份数值,而使用常量就只需知道这个值的地址就行了,本人菜鸟,意见只供参考,如有错误欢迎指出
[解决办法]
宏的机制只是简单的代替,对于其他类型的数值也是这样。 之所以说浮点数,是因为浮点运算有时需要做隐性数据转换
[解决办法]
预处理器盲目的

挑关键词

至于会出现多份数值,一般情况下可以忽略不计。
[解决办法]
因为一个指令就可以包含一个整形。而且处理速度也很快。所以没有关系。32位下,double是8字节的,但是32计算机一次只能处理4字节,由字面常量初始化一个浮点类型对象是需要几个指令的。

热点排行