【问题标题】:Which is better #define PI or const double PI? [duplicate]#define PI 或 const double PI 哪个更好? [复制]
【发布时间】:2016-10-13 10:56:58
【问题描述】:

哪个更好:

#define PI 3.14

const double PI = 3.14;

这是一个面试问题,我似乎找不到明确的答案。

我想我不应该使用宏,但我想对此有一个坚定的答案。

编辑: 所以question marked duplicate 说,定义“不尊重范围”,但我真的不想要范围,我想要一个超级全局的东西,PI 必须是无处不在的 PI,应该从任何地方访问。 #define 在这里对我来说似乎更合理。

另外我看不出在编译时使用 PI 会在哪里出错,所以请提供一个示例。

【问题讨论】:

  • id 认为这取决于您的目标平台。更具体地说,编译器创建程序集和底层 cpu 指令集的方式。举个例子,如果你 #define 一个常量 double,并且编译器将它作为立即数发出,那么一条指令可能会比它简单地发出对内存位置的引用大 2-4 个字节。 2-4 个字节 10000 次加起来并不是很多。但是,如果您的目标平台上只有 4kb 的代码空间,您可能想做其他事情。

标签: c++ c++11 math macros pi


【解决方案1】:

您希望 PI 保持不变,并且在应用程序运行的范围内尽可能多地运行,因此静态 const PI 会很好

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2017-02-28
    • 1970-01-01
    • 2012-06-12
    • 2012-10-21
    • 2017-05-03
    • 2011-07-22
    • 1970-01-01
    • 2011-02-27
    相关资源
    最近更新 更多