double getcircleArea(int radius, double pi);
double getcircleArea(int radius = 1, double pi = 3.14)
{
return radius*radius*pi;
}
int main()
{
printf("area:%d\n", getcircleArea());
printf("area:%d\n", getcircleArea(10));
printf("area:%d\n", getcircleArea(15, 3.14159));
system("pause");
return 0;
}
只是一个简单的例子。
我得到结果:
区:1374389535 面积:0 面积:-1408749273
我想要的是...... 面积:3.14 面积:314 面积:706.85775
答案 0 :(得分:3)
请勿使用printf
。
std::cout << "area: " << getcircleArea() << "\n";
无需记住晦涩的%代码即可运作(&#34;%d?我的意思是&#39; double&#39;!&#34;)
答案 1 :(得分:2)
您的printf()
格式不正确。您正在提供%d
占位符,代表十进制或十进制数,但您应该为其提供%f
占位符以表示浮点数。
printf("Area: %f\n", getcircleArea(10, 3.14));
Here是printf()
函数的一个很好的参考,并提供了所有可用的说明符字符。
您也可以使用标准命名空间中的cout
,如下所示:
std::cout << "Area: " << getcircleArea(10, 3.14);
我还建议不要将PI作为参数传递,因为math.h中存在更精确的常量值。您可以通过执行以下操作来访问它:
M_PI
或者,正如@ M.M建议的那样,你可以通过找到-1的反余弦来得到PI,它会像这样返回PI:
double PI = acos(-1.0);
或者您可以将其设置为常量,如下所示:
const long double PI = 3.141592653589793238L;
const double PI = 3.141592653589793;
const float PI = 3.1415927;
答案 2 :(得分:1)
%d使用整数格式来打印值。如果要打印浮动,则应使用%f。
答案 3 :(得分:1)
%d
用于int
数据类型。将%lf
用于double
。
#include <iostream>
using namespace std;
double getcircleArea(int radius = 1, double pi = 3.14){
return (radius*radius*pi);
}
int main(){
printf("area:%lf\n", getcircleArea()); // %d --> %lf
printf("area:%lf\n", getcircleArea(10)); // %d --> %lf
printf("area:%lf\n", getcircleArea(15, 3.14159)); // %d --> %lf
system("pause")
return 0;
}
答案 4 :(得分:1)
请尝试此代码。如果您没有在代码中创建和使用对象,那么OOP的整个目的就会失败。所以请创建和使用如下代码中所示的对象。
#include <iostream>
using namespace std;
class overloading
{
public:
int getcircleArea()
{
cout<<"area is "<< 0 <<"\n";
}
double getcircleArea(int radius)
{
cout<<"area is "<< radius*radius*3.14<<"\n";
}
double getcircleArea(int radius, float pi)
{
cout<<"area is "<< radius*radius*pi<<"\n";
}
};
int main()
{
overloading overload1;
overload1.getcircleArea();
overload1.getcircleArea(10);
overload1.getcircleArea(15, 3.14159);
return 0;
}
注意:看起来您正在练习功能重载概念。在您的代码中,您已声明了一个函数:
double getcircleArea(int radius = 1, double pi = 3.14)
{
return radius*radius*pi;
}
.....你正在解析main
程序中这个函数的其他值,如下所示:
printf("area:%d\n", getcircleArea(15, 3.14159))
我不推荐这种节目!!