这里我的程序正在运行,它输出的结果为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
答案 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)。