i****d 发帖数: 255 | 1 一个简单的小程序,给pi定义了两个常量,但结果不一样:
#include
#include
#define pi 4.0*atan(1.0)
#define VPI 3.1415926535897931e+0
int main()
{
printf(" pi = %22.16e VPI = %22.16e t1 = %22.16e t2 = %22.16e n", pi, VPI
, 1.5/pi, 1.5/VPI);
return 0;
}
结果是
pi = 3.1415926535897931e+00 VPI = 3.1415926535897931e+00 t1 = 2.
9452431127404310e-01 t2 = 4.7746482927568601e-01
说明这两个pi是有区别的。第二个总是对的,第一个时对时错。有高手给讲一下? | b*******s 发帖数: 5216 | 2 bloody macro
#define pi (4.0*atan(1.0))
better solution
const double pi = 4.0 * atan(1.0);
VPI
【在 i****d 的大作中提到】 : 一个简单的小程序,给pi定义了两个常量,但结果不一样: : #include : #include : #define pi 4.0*atan(1.0) : #define VPI 3.1415926535897931e+0 : int main() : { : printf(" pi = %22.16e VPI = %22.16e t1 = %22.16e t2 = %22.16e n", pi, VPI : , 1.5/pi, 1.5/VPI); : return 0;
| i****d 发帖数: 255 | 3 突然想起来了,define是直接替换,所以有上面的错误。太傻了。
谢谢!
【在 b*******s 的大作中提到】 : bloody macro : #define pi (4.0*atan(1.0)) : better solution : const double pi = 4.0 * atan(1.0); : : VPI
| O*******d 发帖数: 20343 | | m*******l 发帖数: 12782 | 5 考,你们都不用C库自己定义的???? M_PI?
【在 O*******d 的大作中提到】 : 我常用 pi = acos(-1.0);
|
|