函数的返回值是多少?

San*_*nti 0 c

#include <stdio.h>

int add(int, int);

int main(int argc, char const *argv[])
{
    int a = 2, b = 3;
    printf("%d %d %d\n", a, b, add(a, b));
    return 0;
}

int add(int a, int b) {
    int c = a + b;
    return;
}
Run Code Online (Sandbox Code Playgroud)

上面程序的输出是2 3 5,如何在不显式返回的情况下返回c函数

P.P*_*.P. 5

这是未定义的行为.

当一个应该返回值的函数不这样做并且调用者使用返回值时,它是未定义的.您可能观察到的任何事情纯粹是偶然/平台特定的行为,不能依赖.C标准当然不能保证.

从C11草案,6.9.1函数定义/ 12:

如果到达终止函数的},并且调用者使用函数调用的值,则行为是未定义的.

  • 你可以解释一下,这个值可能在堆栈中并作为返回valude但它是纯粹的运气和依赖于实现. (3认同)