注册 登录
编程论坛 C++教室

为什么有这么多错啊?

weixun 发布于 2009-09-24 13:03, 485 次点击
#include<iostream.h>
#include<math.h>
#define PI 3.1415926;
int main()
{
    float r,h,l,s1,s2,v1,v2;
    cin>>r>>h;
    l=2*PI*r;
    s1=PI*r*r;
    s2=4*PI*r*r;
    v1=4/3*PI*r*r*r;
    v2=PI*r*r*h;
    cout<<l<<endl;
    cout<<s1<<endl;
    cout<<s2<<endl;
    cout<<v1<<endl;
    cout<<v2<<endl;
    return 0;
}
7 回复
#2
f23782009-09-24 22:18
PI的值是“ 3.1415926; ”注意那个分号,带入表达式相当于
l = 2*3.1415926;*r;
……
也就是r被当做指针了
把#define PI 3.1415926;中的分号去掉
还有浮点数的精度问题,改成double型吧
#3
choco10242009-09-24 23:36
有两种那样的定义:
#define PI 3.1415926   //这种不加分号,常在C语言里用
const PI = 3.1515926;  //这种要加分号,写C++程序还是用这吧
#4
serious2009-09-25 05:50
在"cmath"头文件C++语言有"M_PI"常量.

比如 :
程序代码:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    cout.precision(20);
    cout << M_PI << endl;
}

结果 :
3.141592653589793116

#5
forclwy2009-09-25 10:04
细节很头疼啊
#6
pywepe2009-09-25 17:16
以下是引用choco1024在2009-9-24 23:36:35的发言:

有两种那样的定义:
#define PI 3.1415926   //这种不加分号,常在C语言里用
const PI = 3.1515926;  //这种要加分号,写C++程序还是用这吧

好样

#define 不用分号 ps:其实也真麻烦,语句都以;结尾,在c标准里#define不算语句吧
#7
weixun2009-09-25 20:14
太感谢各位了。
我问题解决了!!!!!!!
很高兴!!!!!!!!!!!
#8
微软MVP2009-10-01 19:00
呃,第一,宏定义不是语句,它只是机械替换,第二,用const定义常量代替宏定义。第三,用内联函数代替宏定义。总之,对于宏,少用
1