我不知道为什么我的变量不断重置为 0

I am clueless why my variable keeps resetting to 0?

本文关键字:为什么 我的 变量 我不知道      更新时间:2023-10-16

我正在C++自动取款机上学习,但我偶然发现了一些我无法说明为什么会发生这种情况的东西。无缘无故,我在这里寻找我正在尝试做的事情的确切解决方案,只是一个解释将不胜感激!

这是关于他的一段代码:

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 语句直接跳跃到总和整数的声明。

我希望有些人能澄清一下这里到底发生了什么。

提前谢谢你!

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;
}

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

 if (x = 0) 

 if(x == 0)

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

 if(0 == x)

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

你自己做。 =是分配,==是比较。

if (x = 0) {

应该是

if (x == 0) {