C++;基础知识-If语句测试 这是我第一天用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; }

C++;基础知识-If语句测试 这是我第一天用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; },c++,nan,C++,Nan,行中: if (root1 && root2 != nan) 我正在寻找一个简单的测试,看看根是否存在,这显然不起作用。提前感谢您的帮助 要检查某物是否为实数,请使用isnan: if(!isnan(root1) && !isnan(root2)) 说明: isnan确定给定的浮点数arg是否不是一个数字(NaN)。如果arg为NaN,则返回true,否则返回false NaN值用于标识浮点元素的未定义或不可表示的值,例如负数的平方根或0/0的结果。在C+

行中:

if (root1 && root2 != nan) 

我正在寻找一个简单的测试,看看根是否存在,这显然不起作用。提前感谢您的帮助

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

if(!isnan(root1) && !isnan(root2)) 
说明:

isnan
确定给定的浮点数arg是否不是一个数字(NaN)。如果arg为NaN,则返回
true
,否则返回
false


NaN值用于标识浮点元素的未定义或不可表示的值,例如负数的平方根或0/0的结果。在C++中,每个浮点类型都用函数重载实现,每个返回一个布尔值。

检查某个东西是否是实数,使用<代码> iSnA< /C> >:< /P>
if(!isnan(root1) && !isnan(root2)) 
说明:

isnan
确定给定的浮点数arg是否不是一个数字(NaN)。如果arg为NaN,则返回
true
,否则返回
false

NaN值用于标识浮点元素的未定义或不可表示的值,例如负数的平方根或0/0的结果。在C++中,它为每个浮点类型提供函数重载,每个返回一个布尔值。

< P>使用():

#包括
...
如果(!isnan(root1)和&!isnan(root2))
使用():

#包括
...
如果(!isnan(root1)和&!isnan(root2))
double(*)(const char*)
是一种类型,它表示指向函数的指针,该函数返回一个
double
,并接受一个
const char*
参数。如果查看
cmath
的参考,您会发现
nan
就是所讨论的函数

看起来您应该能够使用空字符串调用它以获得合适的值:

nan("")
但是,您不能在
&&
的一侧提供
double
,在另一侧提供
bool
,因此您还需要对
root1
进行适当的测试

<>和是,“代码> n>代码>的类型语法有点疯狂,C是如何执行函数指针语法的,函数本身的名称代表一个指针,因此这是编译器从C++继承的C样式函数指针的结果。

代码>双(*)(conchchar)是一种类型,它表示指向函数的指针,该函数返回一个
double
,并接受一个
const char*
参数。如果查看
cmath
的参考,您会发现
nan
就是所讨论的函数

看起来您应该能够使用空字符串调用它以获得合适的值:

nan("")
但是,您不能在
&&
的一侧提供
double
,在另一侧提供
bool
,因此您还需要对
root1
进行适当的测试

< > >是的,对于No>代码>的那种类型的语法有点疯狂,C++是如何执行函数指针语法的,函数本身的名称代表一个指针,所以这是编译器从C继承的C样式函数指针所得到的。

< P>使用代码>(RooT1!= Na(”))& & ROTT2!=“Na(“”))< /COD> < /P> 问题有两个方面:

  • root1
    始终为真,除非它为
    0
  • nan
    未声明,它应该是
    nan(“”
  • 但我认为最好使用
    !isnan(root1)
    而不仅仅是
    nan
    如果(root1!=nan(“”)和&root2!=nan(“”)使用

    问题有两个方面:

  • root1
    始终为真,除非它为
    0
  • nan
    未声明,它应该是
    nan(“”


  • 但我认为最好使用
    !isnan(root1)
    而不仅仅是
    nan

    什么是
    nan
    ?你在哪里申报的?你是说
    !isnan(root2)
    ?您需要拆分比较运算符。if(root1!=nan&&root2!=nan)。
    std::nan
    是一个函数,而不是一个值!请参阅:并改用
    isnan
    。@tgmath如果您有答案,请将其作为答案而不是注释来写,以便可以根据需要进行投票和接受。什么是
    nan
    ?你在哪里申报的?你是说
    !isnan(root2)
    ?您需要拆分比较运算符。if(root1!=nan&&root2!=nan)。
    std::nan
    是一个函数,而不是一个值!请参阅:并改用
    isnan
    。@tgmath如果您有答案,请将其作为答案而不是注释来写,以便可以根据需要进行投票和接受。。无法执行类似
    root1!=nan
    @JohnBupit:没问题,伙计!!顺便说一句,我第一次相信nan是他使用的变量。由于没有声明
    nan
    变量,我知道OP在
    nan
    函数之后。谢谢你指出它。当你包括
    (你应该这样做)时,你应该打电话给
    std::isnan
    。是的,我本来打算接受它,但不得不再等几分钟。非常感谢。无法执行类似
    root1!=nan
    @JohnBupit:没问题,伙计!!顺便说一句,我第一次相信nan是他使用的变量。由于没有声明
    nan
    变量,我知道OP在
    nan
    函数之后。谢谢你指出它。当你包括
    (你应该这样做)时,你应该打电话给
    std::isnan
    。是的,我本来打算接受它,但不得不再等几分钟。非常感谢。知道了!只需使用检查平方根中的值是否大于0的简单解决方案。不过出于好奇,有没有什么简单的语句来检查某个东西是否是实数呢