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

时间:2013-04-15 03:26:46

标签: c++ c

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

这可以接受吗?

int foo()
{
    int number = 0;
}

返回值是什么?

1 个答案:

答案 0 :(得分: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)从指定的初始化列表中返回的对象或引用。

     

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

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