gpt4 book ai didi

定义为 int 但主体中没有 return 语句的 C 函数仍然可以编译

转载 作者:太空狗 更新时间:2023-10-29 16:33:24 26 4
gpt4 key购买 nike

假设您有这样的 C 代码:

#include <stdio.h>

int main(){
printf("Hello, world!\n");
printf("%d\n", f());
}

int f(){

}

它用 gcc 编译得很好,输出(在我的系统上)是:

Hello, world!

14

但是..但是..这怎么可能?我认为 C 不会让你编译类似的东西,因为 f() 没有返回整数的 return 语句。为什么这是允许的?是 C 特性还是编译器遗漏,14 是从哪里来的?

最佳答案

在这种情况下,返回值取决于确切的平台,可能是汇编级别的返回寄存器(例如 x86 上的 EAX)中碰巧留下的任何随机值。允许不显式返回值,但给出未定义的值。

在这种情况下,14 是 printf 的返回值。

关于定义为 int 但主体中没有 return 语句的 C 函数仍然可以编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4260048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com