任何人都可以解释为什么这段代码会给出运行时错误?

时间:2015-03-19 19:12:44

标签: c runtime-error

我找不到该程序的正确输出。它给出了运行时错误。

#include <stdio.h>
int main()
{
    int c = 5, no = 10;
    do {
        no /= c;
    } while(c--);

    printf ("%d\n", no);
    return 0;
}

3 个答案:

答案 0 :(得分:5)

它除以零。由于您在循环计数器c中使用了后递减,因此它在最后一次迭代中变为0

答案 1 :(得分:3)

现在你知道了@EugeneSh回答运行时错误的原因,现在你可以解决它的问题。

do {
    no /= c;
} while(--c);  // Use pre-increment instead of post-increment.

答案 2 :(得分:1)

另外上面的所有这些答案我只是想说在分割之前检查一个数字是否为零更好 -

#include <stdio.h>
int main()
{
    int c = 5, no = 10;
    do {
        if(c!=0){
           no /= c;
        }
    } while(c--);

    printf ("%d\n", no);
    return 0;
}

这将防止出现这种运行时错误。

希望它会有所帮助。
非常感谢。