这是我玩C++的第一天。我试图做一个真正的基本代码来寻找二次方程的根。到目前为止,这是我的代码:

#include <iostream>
#include <cmath>

int main () {

    int a, b, c;
    double root1, root2;

    std::cout << "Enter the integers a, b, and c to fit in the quadratic equation: ax^2 + bx + c >> " << std::endl;
    std::cout << "a = ";
    std::cin >> a;
    std::cout << "b = ";
    std::cin >> b;
    std::cout << "c = ";
    std::cin >> c;
    std::cout <<"\n";
    std::cout << "Quadratic equation to solve is : " << a << "x^2 + " << b << "x + " << c <<std::endl;

    root1 = (-b + sqrt(b*b - 4*a*c))/(2*a);
    root2 = (-b - sqrt(b*b - 4*a*c))/(2*a);

    if (root1 && root2 != nan) {
        std::cout << "root 1 = " << root1 << std::endl;
        std::cout << "root 2 = " << root2 << std::endl;
    }
    else
    std::cout << "no root exists" << std::endl;

    return 0;
    }

我收到此错误:
invalid operands to binary expression ('double' and 'double (*)(const char *)')

在行中:
if (root1 && root2 != nan)

我正在寻找一个简单的测试来查看根是否存在,并且这显然行不通。在此先感谢您的帮助!

最佳答案

要检查某物是否为实数,请使用isnan:

if(!isnan(root1) && !isnan(root2))

说明:
isnan确定给定的浮点数arg是否为非数字(NaN)。如果arg为NaN,则返回true,否则返回false

NaN值用于标识浮点元素的未定义或无法表示的值,例如负数的平方根或0/0的结果。在C++中,使用每种浮点类型的函数重载来实现该函数,每种重载都返回bool值。

关于c++ - C++基础知识-If语句测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23521834/

10-15 22:46