为何在变量定义时调用ConeVolume函数,输出结果却为0?
问题原因与解决方案
为什么结果是0?
你调用ConeVolume的时机完全搞反了。函数计算体积需要用到radius1和height2的有效数值,但你是先调用函数赋值给volumeCone,之后才让用户输入这两个变量的值。这时候调用函数时,radius1和height2还没被赋值——如果是局部变量,它们的初始值是未定义的垃圾值;如果是全局变量,默认初始化为0。你得到0的结果,大概率是这两个变量当时的值就是0,函数自然算出0。
能不能将变量值设为函数返回值?
当然可以,而且这才是正确的用法。你的ConeVolume函数本身就是用来返回体积计算结果的,正确的流程应该是:先获取用户输入的半径和高度,再调用函数把返回值赋值给volumeCone,或者直接输出函数的返回值。
举个正确的代码示例:
#include <iostream> #include <cmath> double ConeVolume(double radius, double height) { return M_PI * radius * radius * height / 3.0; } int main() { double radius1, height2; // 第一步:获取用户输入 std::cout << "输入底面半径:"; std::cin >> radius1; std::cout << "输入圆锥高度:"; std::cin >> height2; // 第二步:调用函数计算并赋值 double volumeCone = ConeVolume(radius1, height2); // 第三步:输出结果 std::cout << "圆锥体积:" << volumeCone << std::endl; return 0; }
这样调整顺序后,函数就能拿到用户输入的有效参数,计算出正确的体积值。
内容的提问来源于stack exchange,提问作者Matthew Parise
相关产品推荐
相关产品推荐

