C++ VC+;中sqrt()的值始终为0+;

C++ VC+;中sqrt()的值始终为0+;,c++,visual-c++,sqrt,math.sqrt,C++,Visual C++,Sqrt,Math.sqrt,我对函数sqrt()有一些问题!我是一个初学者,所以请宽容,答案可能很简单。这是我的代码: #include <iostream> #include <cmath> using namespace std; int main() { int touche; int i; float x; float racx; const int NFOIS = 5; cout << "Bonjours!" <<

我对函数sqrt()有一些问题!我是一个初学者,所以请宽容,答案可能很简单。这是我的代码:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int touche;
    int i;
    float x;
    float racx;
    const int NFOIS = 5;
    cout << "Bonjours!" << endl;
    cout << "Je vais vous calculer " << NFOIS << " racines carrees" << endl;
    for (i = 0; i < NFOIS; i++)
    {
        cout << "Donner un nombre: " ;
        cin >> x;
        if (x = 0.0)
        {
            cout << "Le nombre" << x << "ne possede pas de racines carrees!" << endl    ;
        }
        else
        {
            racx = sqrt(x);
            cout << "Le nombre " << x << " a une racine carree de : " << racx << endl;    
        }
    }
    cout << "Programme termine veuillez entrer un charactere pour fermer le programme." << endl;
    cin >> touche;
    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
内部接触;
int i;
浮动x;
浮动racx;
常数NFOIS=5;
cout在这一行:

  if (x = 0.0)
您不是将x与0进行比较,而是将值0赋给x,这将在“if”语句中产生false,我假定您希望使用相等运算符==

这是一个很常见的问题(混淆==,有些语言(不是c++)甚至有==),所以不要担心,你似乎努力寻找原因,这个问题有所有需要的答案,做得好,学习愉快。

在这一行:

  if (x = 0.0)
您不是将x与0进行比较,而是将值0赋给x,这将在“if”语句中产生false,我假定您希望使用相等运算符==


这是一个很常见的问题(混淆==,有些语言(不是c++)甚至有==)所以别担心,似乎你已经尽力找到了原因,问题已经解决了,干得好,学习也很有趣。

x=0.0
x
设置为零,而不是检查它是否为零。同样值得注意的是,打开编译器警告可能有助于检测这些赋值的使用,其中比较是有意的。我不知道VC++,但
gcc
肯定会产生这个警告。你怎么会认为0没有平方根?只有负数没有平方根。问题被发现了,我犯了一个错误,不是=但是"
x=0.0
x
设置为零,而不是检查它是否为零。还值得注意的是,打开编译器警告可能有助于检测这些用于比较的赋值。我不知道VC++,但
gcc
肯定会产生此警告。你为什么认为0没有平方根只有负数没有。问题被发现了,我犯了一个错误,它不是=而是“谢谢你!事实上它是”谢谢你!事实上它是“