我无能为力为什么我的变量保持重置为0?

时间:2014-08-21 15:58:07

标签: c++

我正在学习C ++ atm,但我偶然发现了一些我无法宣布它为什么会发生的事情。 我无缘无故地在这里寻找我想要做的事情的确切解决方案,我们将非常感谢您的解释!

这是关于他的代码:

int Factorial(int x) {
    if (x = 0) {
        x = 1;
    } else {        
        int sum = 1;
        for (int counter = 1; counter <= x; ++counter) {
            sum *= counter;
        }
        x = sum;
    }
    return x;
}

因此,我们假设我使用int 5(Factorial(5))调用Factorial()。 不知怎的,一旦程序通过if(x = 0)语句,它就会将它(x)重置为0,至少这是我在Visual Studio中可以看到的所有内容,因为它直接从if语句中跳过sum整数的声明。

我希望有些人可以澄清我这里发生的事情。

提前谢谢!

3 个答案:

答案 0 :(得分:6)

if(x = 0)

需要

if(x==0)

目前,您要将x指定为0,然后检查结果(0)是否为true,这是永远不会的,因为0false

此外,修改参数变量是不好的做法。您可以通过更改返回值来简化代码并避免这样做:

int Factorial(int x) {
    if (x == 0) {
        return 1;
    }

    int sum = 1;
    for (int counter = 1; counter <= x; ++counter) {
        sum *= counter;
    }
    return sum;
}

答案 1 :(得分:5)

正如其他答案所述,这是因为你需要改变

 if (x = 0) 

 if(x == 0)

一般来说,为了避免这种情况,建议做

 if(0 == x)

因为在这种情况下,如果只有一个'='而不是两个,则会抛出错误

答案 2 :(得分:3)

你自己做的。 =是作业,==是比较。

if (x = 0) {

应该是

if (x == 0) {