到达函数结束而没有return语句

ANSI X3.159-1989,第3.6.6.4节,第33-35行:

“如果执行了没有表达式的return语句,并且调用者使用了函数调用的值,则行为是未定义的。 到达终止函数的}等同于执行不带表达式的return语句。“

对于类似的陈述,我一直在查看ISO/IEC 9899:1999(E)ISO/IEC 9899:2011(E)ISO/IEC 14882:2011(E)ISO/IEC 14882:2014(E) ,特别是第二句话,但是我发现的所有内容都与函数main有关。 如果有人能指出我在这些文件中的任何一个文件中的正确位置(我不在乎哪个),我会很感激。

至于第一句话(你的来源似乎是错误的或过时的):

C 2011 6.8.6.4退货声明

1带有表达式的return语句不应出现在返回类型为void的函数中。 不带表达式的return语句只能出现在返回类型为void的函数中。

至于第二句话:

C 2011 6.9.1函数定义

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

在C99 TC2和C11中,它是6.9.1 / 12:

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

在C ++ 11和C ++ 14中,它是[stmt.return] / 2:

流出函数末尾相当于没有值的返回; 这会导致值返回函数中的未定义行为