这是我的计划:
#include "stdafx.h"
#include <iostream>
using namespace std;
double areaofcircle(double r)
{
return 3.14 * r * r;
}
int main()
{
cout << areaofcircle(5);
}
我应该得到“78.5”的输出,但我一直得到“78.512”。到底是怎么回事?! 我也试过漂浮,但我仍然得到相同的输出。
另外只是一个附带问题,我真的需要添加“return 0;”到主要功能?
还有一个问题,我是否需要编写“using namespace std;”在每个函数里面,或者我可以把它写在一切之外,就像我一直在做的那样。
答案 0 :(得分:1)
我认为你做错了什么。我在GCC编译器上尝试过相同的操作,但我确实得到了78.5。您使用的是哪种编译器?
关于您的其他问题
从main返回程序的状态总是一个好主意。通常,如果一切正常,您可以返回EXIT_SUCCESS,否则您可以返回EXIT_FAILURE。
没有必要包含使用命名空间std。相反,污染标准命名空间是不好的做法。您应该只包括您经常使用的那些功能。
阅读有关C ++的更多信息。请检查此link
希望这有帮助。
答案 1 :(得分:1)
在VS 2008上尝试了几个实验,看看我是否会遇到类似的错误。通过将pi更改为浮点数,我得到的是78.500002622604370,这与您的问题不同但不一样。但是当pi是双倍时,我确实得到78.5。
我建议您告诉我们您正在使用的编译器和版本,然后可能有人可以提供帮助。
#include "stdafx.h"
#include <iostream>
const double pi = 3.14;
double areaofcircle(double r)
{
return pi * r * r;
}
int _tmain(int argc, _TCHAR* argv[])
{
double temp = areaofcircle(5);
std::cout << temp;
return 0;
}
答案 2 :(得分:1)
你正在传递一个整数(5)的文字,所以某处需要隐式转换才能将它变成一个double。通过5.0会更好。双打的C ++默认值不需要说明符,所以你的3.14就可以了。 (指定一个浮点数需要3.14f)。也就是说,我尝试了5和5.0,并且在我的编译器上都获得了78.5次。
你如何使用std命名空间很好,但正如所指出的那样,它确实将所有标准命名空间带入了范围。我在教材中看到了很多。最好只使用
using std::cout;
或者只是将std :: cout明确添加到所有用途。但是,从编译的角度来看,没有任何“错误”。