为什么我得到总和作为输出,即使我没有返回值?

时间:2018-06-06 15:37:00

标签: c function return

sum(int a,int b)
{
    int x;
    x = a+b;
}
int main()
{ 
    printf("%d",sum(2,3));
}

如果我删除了x,那么它将始终返回第一个参数,但我没有返回任何值。

2 个答案:

答案 0 :(得分:1)

您正在尝试使用函数调用返回值,并且该函数中没有return语句。

直接引用C11,章节§6.9.1(main()以外的函数脚注

  

如果到达了终止函数的},则使用函数调用的值   调用者,行为未定义。

脚注:

从章节§5.1.2.2.3

  

[...]到达终结的}   main函数返回值0。

答案 1 :(得分:-1)

int sum(int a,int b)
 {
     int x;
     x = a+b;
     return x;
 }
 int main()
 { 
     printf("%d",sum(2,3));
 }`

这是你的代码看起来如何,你有时会得到 的结果,因为x是一个局部变量,它的值会一直存在于堆栈中,直到它被覆盖为止,所以你可能最终得到你想要的价值,或者你可能最终得到一些垃圾