我知道当程序消耗大量内存或在某处除以0时会发生运行时错误。 这是打印所有数字的代码,直到用户输入类型42.(不打印42)。
#include<stdio.h>
int main()
{
int n;
while(1)
{
scanf("%d",&n);
if(n==42)
break;
else
printf("%d",n);
}
}
请告诉我为什么在这么简单的代码中出现运行时错误?
答案 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
结尾,则会将其视为运行时错误。