定义PI的价值

coc*_*nut 1 c++ pi compiler-errors

我正在开发一个新项目,我正在努力编写最干净,最容易阅读,希望最有效的代码.

我需要使用PI,但显然它没有在math.h中定义.所以我读到了这样做:

const double PI = atan(1.0)*4
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

函数调用不能出现在常量表达式中

有什么想法吗?如何将PI作为常量?

另外,我想尽可能多地学习这个项目,所以如果你能解释为什么你的答案会起作用的话会很棒.谢谢!

Ned*_*der 7

怎么样:

const double PI = 3.1415926535897932384626433832795028841971693993751058209;
Run Code Online (Sandbox Code Playgroud)

在我看来,这比我更清洁,更容易阅读,更有效率atan(1.0)*4.

  • 看起来这个文字已准备好192位浮点数. (5认同)

Mic*_*urr 5

你错误地标记了这个问题.在C++中,以下是明确定义的并将编译:

#include <math.h>

const double PI = atan(1.0)*4;
Run Code Online (Sandbox Code Playgroud)

但是在C中,不允许在文件范围内使用初始值设定项.

在C中,您需要使用非标准宏(例如M_PI在GCC中),创建自己适当的宏或文字(Ned Batchelder已经为您完成了困难的部分),或者在您自己的函数中适当地初始化它足够早的时间.

  • 我正在关于文件范围变量的常量表达式的语义细节进行投票,这篇文章有3票,并将`PI`定义为6.23. (4认同)