为什么它会给出运行时错误,但它会给出输出

时间:2014-09-28 09:18:52

标签: c

这里我的程序正在运行,它输出的结果为93,但它会生成运行时错误,我无法理解为什么会这样?

#include<stdio.h>
int add(int ,int );
int main()
{

 printf("addition is=%d \n",add(91,2));
}
int add(int a,int b)
{
return (a+b);
}

OUTPUT 运行时错误 加= = 93

3 个答案:

答案 0 :(得分:4)

在C89中,您需要从int返回main。例如,

int main(void)
{
 printf("addition is=%d \n",add(91,2));
 return 0;
}

返回值0表示成功。使用gcc 4.9在C89模式下编译代码会产生以下警告:

  

警告:控制到达非空函数的末尾[-Wreturn-type]

在C99或C11中,main函数有一个例外,在没有return语句的情况下存在隐式return 0。因此,您的代码在比C89更新的标准中没有错误。

答案 1 :(得分:1)

您能否注意到您在程序中使用的两个功能。

int main()
int add()

两者的返回类型都为int(整数)。但是你从add()返回(a+b)但是没有从main()返回任何内容。

在main()函数的末尾尝试return 0

从main函数返回时,您可以选择多个选项。这将帮助您将有关程序执行方式的信息传递给C运行时。例如,return 0用于正常执行,return 1用于错误。

答案 2 :(得分:0)

将main()的返回类型更改为&#34; void&#34;否则将&#34;返回0; &#34;在主要功能。你指定了返回类型为int的main函数,但是函数没有返回任何内容,因此发生错误并且输出显示因为int add(int,int)正确返回(a + b)。