【发布时间】:2012-04-13 17:27:44
【问题描述】:
如果一个函数的返回类型不是void,并且该函数没有返回任何内容,那么我猜编译器会返回一个垃圾值(可能被视为未初始化的值)。它发生在编译时,为什么不应该显示错误?
例如,
int func1() {
return; // error
}
int func2() {
// does not return anything
}
第二个func2 应该抛出一个错误,但它不会。有什么原因吗?我的想法是,它可以看作是一个未初始化的值,所以如果我们需要在第二种情况下抛出错误,那么我们需要抛出错误,如果一个值未初始化,比如说
int i; // error
int i = 6; // okay
任何想法,或者这是一个重复的问题?感谢您的帮助。
【问题讨论】:
-
是 C 还是 C++?您是否收到编译器错误或警告?你用的是哪个编译器?
-
好吧,我看到了警告,问题有点像,为什么没有错误?为什么编译器虽然看到了却不抛出错误?
-
返回值。显示或打印编译错误。他们都没有被抛出。抛出异常。不要滥用标准术语。
标签: c++ c return-value initialization garbage