麻烦大家来帮我看看C++简单代码

来源:百度知道 编辑:UC知道 时间:2024/05/21 19:03:36
#include <iostream.h>

const float PI = 3.14;

class Cricle
{
private:
int raidom;
public:
float Get_C(int raidom)
{
return(raidom*PI*2);
}

float Get_S(int raidom)
{
return(PI*raidom*raidom);
}

float S_Price(int raidom)
{
float Result;
Result=Get_S(raidom)-Get_S(raidom-3);
return(20*Result);
}

float C_Price(int raidom);
};

float Cricle::C_Price(int raidom)
{
float Result1;
Result1=Get_C(raidom);
return(35*Result1);
}

void main()
{
Cricle x;
int r;
cin>>r;
cout<<"S's Price is "<<x.S_Price(r)<<endl;
cout<<"C's Price is "<<x.C_Price(r)<<endl;
}
编译的时候一直报错,错误一直指向定义常量那一句,但是换成#define就没问题,我是想把常量也指定一个类型,怎么回事啊

因为当你在代码中写一个浮点数时, 编译系统会将其默认为 double 类型
所以 const float PI = 3.14; 就是将一个 double 类型的数赋值给一个 float 类型变量, 这样会触发一个 warning

所以你应该强制转换
const float PI = (float) 3.14;

在 C++ 中, 不推荐使用 C 中的强制换方法(就是在括号中加上类型名), 而是使用将类型当作一个函数的写法.

也就是上面的
const float PI = (float) 3.14;

在 C++ 中的标准写法是
const float PI = float(3.14);

其实除了强制转换外, 我们还可以让编译器认为我们写出的浮点数为 float 类型而不是 double 类型,

也就是在浮点数后加 'f' (不包括单引号), 如
const float PI = 3.14f;

还有, 你的上面的代码在 C++ 标准中是不规范的, 在某些严格遵循 C++ 标准的编译器中你的代码是无法通过编译的

应该是

#include <iostream> // 像很多 C++ 标准中新增的头文件都不推荐加 .h

using namespace std; // C++ 标准中, 只有申请使用名空间 std, 才能使用 cout 还有 endl 等等
// 否则就得使用 std::cout 和 std::endl 等等

const float PI = 3.14f;

//... // 后面代码就和你的一样