c++ - VC++ 中 sqrt() 的值始终为 0

标签 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!" << 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;
}

我的问题是当我输入一个数字时(它被存储,我在将它发布在这里之前用 cout 检查它“以防它是它”)是当 sqrt(x);它只告诉程序无论我输入什么,x 和 racx 都是 0。我真的不知道它是什么。我还尝试更改“math.h”的#include,但仍然是同样的事情,所以我认为我的代码在某处是错误的。

如果您想知道在 windows 7 旗舰版 64 位中,我使用 Visual c++ 2013。

PS:如您所见,我的第一语言是法语,但请放心,我的英语非常好,即使我的写作能力很差 :P。

无论如何,谢谢大家的关注和帮助!我们将不胜感激!

最佳答案

在这一行中:

  if (x = 0.0)

您不是将 x 与 0 进行比较,而是将值 0 赋给 x,这会在“if”语句中产生 false,我假设您想要使用相等运算符 ==。

这是一个很常见的问题(混淆=和==,有些语言(不是c++)甚至有===)所以不用担心,看起来你已经努力找到原因并且问题已经解决了回答它所需的一切,干得好,学习愉快。

关于c++ - VC++ 中 sqrt() 的值始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887727/

相关文章:

visual-c++ - 32 位应用程序是否消耗多个内核/处理器

c++ - 为什么 ifstream 不能打开这个文件?

c++ - OpenMP - 将结果存储在 vector 中

c++ - GetConsoleScreenBufferInfoEx 相当于 Windows XP?

visual-c++ - 是否禁止重新分发 C++ 2008 Redistributable Package?

Java:性能 SQRT 计算

android - 在 Android Studio 中链接外部库 (gradle)

c++ - 当第三方代码中没有警告时,为什么不完全将所有警告都视为错误?

c - Timing Quake III hack 仅在优化编译时有效

python - 我应该如何使用 GEKKO 为 log 或 sqrt 建模?约束条件