【发布时间】:2012-11-10 16:08:02
【问题描述】:
下面是代码:
代码:
#include <iostream>
using namespace std;
int sum(int ); //To sum up the user input up to 1 , for e.g 4 = 4 + 3 + 2 + 1 = 10
int main(void)
{
int num;
int total;
cin >> num;
total = sum(num);
cout << total;
return 0;
}
int sum(int num)
{
if(num > 0) // How if num is -1 or -10??
return num + sum(num - 1);
}
问题:
1.) 我尝试执行上述代码并输入违反 if 条件的值,例如 -1 或 -100 。但是当我 cout total 变量时,我仍然得到了我给变量 num 的值。
2.) 我的问题是,这是标准行为吗?因为我可以运行此代码而不会收到任何警告或错误说没有 return 声明声明我没有额外的 return 声明以防 num 违反条件。那么这 returning-the-original-value-if-the-condition-is-not-true 是正常的还是取决于所使用的编译器?
谢谢。
【问题讨论】:
-
函数必须返回一些东西。当返回类型不是
void时不返回任何内容是未定义的行为。 -
@chris 你的意思是“当返回类型是
int”? -
@Fraser,我的意思是不是无效,谢谢。
-
您是否启用了警告?当我用 g++ -Wall 编译时,我得到:
main.cpp:22:1: warning: control reaches end of non-void function [-Wreturn-type] -
这出乎意料。 gcc/g++ 自古以来就用
-Wall警告过这一点。如果 4.7.0 没有,请提交错误报告。
标签: c++ function if-statement return return-value