为什么我会收到运行时错误?

时间:2017-05-20 08:56:09

标签: c runtime-error

我知道当程序消耗大量内存或在某处除以0时会发生运行时错误。 这是打印所有数字的代码,直到用户输入类型42.(不打印42)。

#include<stdio.h>
int main()
{
    int n;
    while(1)
    {

        scanf("%d",&n);
        if(n==42)
            break;
        else
            printf("%d",n);

    }
} 

请告诉我为什么在这么简单的代码中出现运行时错误?

2 个答案:

答案 0 :(得分:1)

你的main函数应该返回一个int而你不是:那就是你得到运行时错误的原因。这是正确的代码:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int n = 0;
    while(1) {

        scanf("%d",&n);
        if(n == 42)
            break;
        else
            printf("%d",n);

    }
    return EXIT_SUCCESS;
}

如果您不想包含return EXIT_SUCCESS;,则可以更改return 0;中的stdlib.h,但此处为why it's better

您还应该考虑使用除CodeChef之外的其他IDE。 CodeBlocks或VisualStudio更好,更明确,包含错误和警告。在使用之前,您应该将int n设置为0.

答案 1 :(得分:1)

这很好用,因为在CodeChef上运行时除了

根据C标准(至少C99和C11),当return 0结束而没有返回某些内容时,隐含main()。因此,尽管可以认为在return 0结尾处总是main()是个好主意,但跳过它并没有错。

但是在CodeChef上运行时并非如此。出于某种原因,如果main不以return 0结尾,则会将其视为运行时错误。