c++ - 程序编译并执行,但输出的最大值不合理。 long double如何显示?

标签 c++

所以我让这个程序运行,但现在我输入的任何数字都变成了非常大的数字。我需要为数学计算添加标题吗?或者是否有类似 C 语言的 C++ 的 printf 函数?

#include <iostream>                                                     // Necessary 
using namespace std;
#define mMaxOf2(max, min) ((max) > (min) ? (max) : (min))
#define mMaxOf3(Min, Mid, Max)\
{\
     mMaxOf2(mMaxOf2((Min), (Mid)),(Max))\
}

int main()
{
    double primary;
    double secondary;
    double tertiary;
    long double maximum = mMaxOf3(primary, secondary, tertiary);

    cout << "Please enter three numbers: ";
    cin >> primary >> secondary >> tertiary;
    cout << "The maximum of " << primary << " " << secondary << " " << tertiary;
    cout << " using mMaxOf3 is " << maximum;


    return 0;
}

最佳答案

问题是您在获得用户输入之前计算最大值。像这样重新排列您的代码:

    double primary;
    double secondary;
    double tertiary;
    long double maximum;

    cout << "Please enter three numbers: ";
    cin >> primary >> secondary >> tertiary;

    maximum = mMaxOf3(primary, secondary, tertiary);

    cout << "The maximum of " << primary << " " << secondary << " " << tertiary;
    cout << " using mMaxOf3 is " << maximum;

永远记住代码是顺序执行的,或者您可以说逐行。对于 C++,对变量的任何更改都会影响使用这些修改后的变量的后续指令的行为。在你的例子中,你首先计算了 maximum before 你已经正确设置了 primarysecondary第三级mMaxOf3 中需要。

请注意,primarysecondarytertiarymaximum 未初始化是完全可以的程序中的值。

关于c++ - 程序编译并执行,但输出的最大值不合理。 long double如何显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13005557/

相关文章:

c++ - 二维数组作为类的实例变量

c++ - 为什么调用成员函数就好像它是静态的(当它不是)在 C++ 中工作?

c++ - 在这种情况下,为什么 g++ 和 clang 会破坏 namespace 抽象?

c++ - 这两个 C++ 初始化器语法在语义上是否有所不同?

c++ - Visual Studios - C++ 控制台立即打开和关闭

c++ - 将 valarray 显式初始化为零有歧义吗?

c# - "Unable to find an entry point named [function] in dll"(c++到c#类型转换)

c++ - 在 C++ 中使用 TCP 从服务器端向客户端发送文件

c++ - 如何在 Windows 7 上使用 DirectX 11 和 Visual Studio 2015 工具集 v140

c++ - 在 C++ 中重载运算符时 "const"是什么意思