gpt4 book ai didi

c - 为什么不返回编译的标准 let 函数?

转载 作者:太空狗 更新时间:2023-10-29 15:00:58 24 4
gpt4 key购买 nike

f() 不返回,即使它的签名说它应该返回。为什么允许这个编译的原因?C 标准不要求编译器使其失败是否有原因?

我知道这是未定义的行为,但为什么首先允许它呢?有历史原因吗?

double f(){}

int main()
{
f();
return 0;
}

最佳答案

Is there a reason the C standard does not require the compiler to make it fail?

通过调用未定义的行为,C 标准允许编译器变得不那么复杂。确实有一些情况,比如if语句,很难说函数是否有返回值:

int f(int n)
{
if (n > 0) return 1;
}
  • 如果我写f(5),编译器很容易说功能正确。
  • 如果我写成f(-5),也很容易被检测到未定义的返回值。

但是如果参数来自用户输入,编译器应该如何知道函数是否返回值?由于这可能是一个有效或错误的程序,C 标准允许编译器做他们想做的事。 C 旨在尽可能智能和简单。

关于c - 为什么不返回编译的标准 let 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14483185/

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