我可以在不返回void的函数中返回值吗?

jam*_*345 -1 c c++

在C中,当一个函数的返回类型为say int并且我在函数中不包含返回调用时,我只会收到警告.

这可以接受吗?

int foo()
{
    int number = 0;
}
Run Code Online (Sandbox Code Playgroud)

返回值是多少?

Ben*_*igt 5

标准6.6.3节包括以下规则:

不带表达式和braced-init-list的return语句只能用于不返回值的函数,即返回类型为void的函数,构造函数(12.1)或析构函数(12.4) .表达式为非void类型的return语句只能用于返回值的函数; 表达式的值返回给函数的调用者.表达式的值隐式转换为它出现的函数的返回类型.返回语句可能涉及构造和复制或移动临时对象(12.2).带有braced-init-list的return语句通过copy-list-initialization(8.5.4)从指定的初始化列表初始化要从函数返回的对象或引用.

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

请注意,如果函数的右大括号可以访问,这只是一个问题.如果执行始终采用具有a的分支,return {value}则没有问题.