
一个简单的C++问题
基类是使用极坐标的点类,从它派生一个圆类,圆类用点类的坐标为圆心,圆周通过极坐标的原点,圆类有输出圆心直角坐标圆半径和面积的成员函数,完成类的设计并验证之。我手头上有一个...
基类是使用极坐标的点类,从它派生一个圆类,圆类用点类的坐标为圆心,圆周通过极坐标的原点,圆类有输出圆心直角坐标 圆半径和面积的成员函数,完成类的设计并验证之。
我手头上有一个原代码:
#include <iostream>
#include <cmath>
using namespace std;
const float PI = 3.1415;
class point{
public:
int x;
int y;
point(int a,int b):x(a),y(b){}
};
class circle:public point
{
public:
circle(int a,int b):point(a,b)
{
this->radius = sqrt(a*a+b*b);
}
float radius;
void printout();
};
void circle::printout()
{
cout<<"圆心直角座标:"<<"("<<x<<","<<y<<")"<<endl;
cout<<"圆半径:"<<radius<<endl;
float area = PI*radius*radius;
cout<<"圆面积"<<area<<endl;
}
int main(int argv, char** argc)
{
circle *c1 = new circle(3,4);
c1->printout();
delete c1;
}
我自认为运行了没问题,但是我运行之后竟然还有两个警告
下面是软件指出的问题:
-------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
e:\cpp1.cpp(5) : warning C4305: 'initializing' : truncation from 'const double' to 'const float'
e:\cpp1.cpp(40) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Linking...
Cpp1.exe - 0 error(s), 2 warning(s)
大家来说说,为什么会出现这样的问题呢?
要怎样该才能让程序成功运行呢?
希望大家给我一个详细的答案 展开
我手头上有一个原代码:
#include <iostream>
#include <cmath>
using namespace std;
const float PI = 3.1415;
class point{
public:
int x;
int y;
point(int a,int b):x(a),y(b){}
};
class circle:public point
{
public:
circle(int a,int b):point(a,b)
{
this->radius = sqrt(a*a+b*b);
}
float radius;
void printout();
};
void circle::printout()
{
cout<<"圆心直角座标:"<<"("<<x<<","<<y<<")"<<endl;
cout<<"圆半径:"<<radius<<endl;
float area = PI*radius*radius;
cout<<"圆面积"<<area<<endl;
}
int main(int argv, char** argc)
{
circle *c1 = new circle(3,4);
c1->printout();
delete c1;
}
我自认为运行了没问题,但是我运行之后竟然还有两个警告
下面是软件指出的问题:
-------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
e:\cpp1.cpp(5) : warning C4305: 'initializing' : truncation from 'const double' to 'const float'
e:\cpp1.cpp(40) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Linking...
Cpp1.exe - 0 error(s), 2 warning(s)
大家来说说,为什么会出现这样的问题呢?
要怎样该才能让程序成功运行呢?
希望大家给我一个详细的答案 展开
4个回答
展开全部
第一个警告原因:
    3.1415默认是double类型,你把它赋给一个float类型的变量,所以它会自动进行一个转换,建议小数都定义成double 这样就没这个问题了;
解决方案:
1.把第一句改成const float PI = (float)3.1415;
2.把float都改成double;
第二个警告原因:
    你定义的main返回值是int而你又没写返回什么。
解决方案:
1.把int main(int argv, char** argc) 改成void main(int argv, char** argc)
2.在main函数的最后一句加上return 0;
    3.1415默认是double类型,你把它赋给一个float类型的变量,所以它会自动进行一个转换,建议小数都定义成double 这样就没这个问题了;
解决方案:
1.把第一句改成const float PI = (float)3.1415;
2.把float都改成double;
第二个警告原因:
    你定义的main返回值是int而你又没写返回什么。
解决方案:
1.把int main(int argv, char** argc) 改成void main(int argv, char** argc)
2.在main函数的最后一句加上return 0;
展开全部
看英文理解
e:\cpp1.cpp(5) : warning C4305: 'initializing' : truncation from 'const double' to 'const float'
说的是CONST DOUBLE数据传给CONST FLOAT了。
e:\cpp1.cpp(40) : warning C4508: 'main' : function should return a value; 'void' return type assumed
说 的是MAIN函数要有返回值,因为你定义的是INT型的MAIN().
e:\cpp1.cpp(5) : warning C4305: 'initializing' : truncation from 'const double' to 'const float'
说的是CONST DOUBLE数据传给CONST FLOAT了。
e:\cpp1.cpp(40) : warning C4508: 'main' : function should return a value; 'void' return type assumed
说 的是MAIN函数要有返回值,因为你定义的是INT型的MAIN().
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把PI 定义成宏 #define pi 3.14
主函数改为void main() 或者最后加个return(1);
主函数改为void main() 或者最后加个return(1);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没问题啊
老大~~~~~~~
老大~~~~~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询