c++ - 无论条件是否为真 if 总是在 c++ 中执行

标签 c++ if-statement error-correction

有人可以更正此代码吗?

#include <iostream>
using namespace std;

int main()
{
    int a;
    int b;
    int c;
    double d;
    double e;
    double f;
    double g;
    f = a / b;
    g = b / a;
    c = 0;
    cin >> a;
    cin >> b;
    f = a / b;
    g = b / a;
    if (a == b)
    {
        cout << a << endl;
        return 0;
    }
    else if (f == int(f))
    {
        cout << a << endl;
        return 0;
    }
start:
    while (a * b > c)
        c = c + 1;
    d = c / a;
    e = c / b;
    if (d == int(d))
        if (e == int(e))
        {
            cout << c << endl;
            return 0;
        }
        else if (d != int(d))
            goto start;
        else if (e != int(e))
            goto start;
    if (a * b <= c)
        cout << a * b << endl;
}

不管怎样

else if(f==int(f))

代码总是被执行。例如。我输入 3 和 5,尽管 3/5 给出小数,但 else if 始终执行并输出 3。我在这里缺少什么?

最佳答案

代码中导致 if 语句出现问题的主要错误是整数除法。您必须将操作数转换为 double 才能执行浮点除法:

cin >> a;
cin >> b;
f = double(a) / double(b);
g = double(b) / double(a);

还有其他问题需要解决,但这就是导致您提出问题的问题。

关于c++ - 无论条件是否为真 if 总是在 c++ 中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60367097/

相关文章:

algorithm - 有效但易于编码的纠错算法

c++ - 类型推导 lambda 引用资料

c++ - MSVC SAL 与 C++2a 契约

Java 使用数组比 C++ 中的 std::vector 快 8 倍。我做错了什么?

c++ - 在 seekg() 上读取文件时崩溃

c - C 编程中的简单 if 和 else

c++ - 这些(bCondition == NULL)和(NULL==bCondition)有什么区别?

javascript - react : How to conditionally render?

python - 通过超几何分析对 p 值进行 Bonferroni 校正

algorithm - 基于 Damm 校验位的纠错