如果函数调用没有真正提供 return 值,那么该函数调用的值是多少

What's the return value from a function call if that function doesn't really provide one

假设我们有以下代码:

int func(char str[], int len) {
    // Don't return anything here.
}

int main() {
    char str[] = "Hello";
    int result = func(str, strlen(str));
    printf("%d\n", result);
}

它会在我的电脑上打印一些字符串值-1679929632。而且在我执行的时候会时不时的变化

谁能解释为什么会这样?

如果函数定义中没有出现return语句,则在执行完被调用函数的最后一条语句后,控制权自动return转到调用函数。在这种情况下,被调用函数的 return 值为 undefined。如果不需要 return 值,则将函数声明为 void return 类型;否则,默认 return 类型是 int.

如上所述,它是未定义的,因此找到某些随机值背后的根本原因如 return 将毫无用处。