为什么这个程序不会停止?

时间:2015-02-13 16:35:57

标签: c

我的导师要求我们通过此代码跟踪变量,并确定变量何时发生变化。他说输入应该是

8, 4, 2, 1

我编译并运行代码让我了解它但它并没有停止。它只是一次又一次地输出“请给我两个号码:”。任何帮助是极大的赞赏。

#include <stdio.h>
main ()
{
    int a;
    int b;
    int c=0;
    int d=0;
    int e=0;
    int f=0;

    while (c == 0 || a + b !=0){
        printf("Feed me two numbers please: \n");
        scanf ("%d %d", &a, &b);
        if (c == c + 1){
            printf("Welcome to my world!\n\n");
        }
        if (c = 0){
            d = a + b;
            e = d;
        }
        else if (a + b > d){
            d = a + b;
        }
        else if (a + b < e){
            e = a + b;
        }
        if (a < f){
            f=a;
        }
        c = c + 1;
    }

    printf("Now hear this:%d %d\n\n", d, e, f);
}

1 个答案:

答案 0 :(得分:4)

if (c = 0)

0分配给c,分配的表达式会返回分配值,因此表达式将为总是评估为false,因为它等同于if(0),它应该是if(c == 0)

另外

if (c == c + 1)

没有任何意义,你究竟是什么意思?我认为它应该是c > 0

在所有情况下,您都应该使用调试器,它可以为您节省大量时间,并且可以帮助您真正理解您的代码。