c - 为什么这个程序不停止?

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

最佳答案

if (c = 0)

您正在分配 0c,分配的表达式返回分配的值,所以表达式将总是评估为 false,因为它等同于 if(0),它应该是 if(c == 0)

还有

if (c == c + 1)

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

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

关于c - 为什么这个程序不停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28504331/

相关文章:

c - 8051F312微 Controller

c - IRQ 和 iret 指令语义在 32 位内核上的工作(保护模式)

c - C 中用户定义的数组程序出现问题

c - 如何通过在 Windows 机器上安装 Cygwin 来使用 gcc?

c - semop( ) 失败,错误号 4。semop() 是否支持进程内的线程竞争?

从 C 中的终端计算最小值/最大值

c - 如何扫描指向c中结构体指针的指针?

c - 提高SQLite每秒INSERT的性能?

c - 为什么 inet_ntoa 和 inet_ntop "reverse"字节?

c++ - "Tabular Data"的 XML 或 CSV