gpt4 book ai didi

c - 返回什么;在 boolean 返回类型返回的 C 函数中?

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

假设 C 中的一个 boolean 返回类型的函数( boolean 值可以实现为 0 和 1 的枚举或其他方式,但这并不重要):

boolean foo ()
{
//do something

return;
}

这会返回什么?它返回 FALSE 吗?或者它只是退出函数而没有任何返回?期望从 foo 返回的函数会收到什么?

最佳答案

这是未定义的行为,没有表达式的 return 语句只能在返回类型为 void 的函数中使用。这包含在 draft C99 standard 中。 6.8.6.4 返回语句部分:

[...]A return statement without an expression shall only appear in a function whose return type is void.

有趣的是,当使用 clang 时,默认情况下这是一个错误,但是没有任何标志的 gcc 似乎允许此代码甚至没有警告。对于 gcc,使用 -std=c99 将其变为警告,使用 -pedantic-errors 标志将其变为错误。

在使用 gccclang 编译 C 程序时习惯使用的一组很好的标志如下:

-std=c99 -Wall -Wextra -Wconversion -pedantic

-std 调整为您的目标标准。

关于c - 返回什么;在 boolean 返回类型返回的 C 函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042702/

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