在 c 中,return 值如何在函数中工作,其中 return 值已添加到 if 语句中?
In c, How does return values work in a function where return values are already added in if statements?
快速提问:
int x;
int y;
int function (int a, int b)
{
if (x == y)
{if (y == 1) {return -1;}
else {return 1;}}
else {return 1;}
}
为什么上面的代码要求我在 if-else 语句之外添加一个 return 值
我应该 returning 什么?
我认为这是一个一般的编译器警告,return
内部条件情况的情况未被考虑在内。
所以,这就是编译器“看到”的内容:
int function (int a, int b)
{
if condition
{...}
else {...}
}
... 编译器询问“return 在哪里?”。
您只需在函数代码的末尾添加 return 0; // not needed, only here for avoiding compiler warnings
就可以了。
如果你要格式化函数
int x;
int y;
int function (int a, int b)
{
if (x == y)
{
if (y == 1) {return -1;}
else {return 1}
else {return 1;}
}
您会看到缺少一个右大括号。
你至少要写
int function (int a, int b)
{
if (x == y)
{
if (y == 1) {return -1;}
else {return 1}
}
else {return 1;}
}
在这种情况下,returned 值取决于哪个条件的计算结果为真。
如果变量 x
和 y
尚未更改(最初它们是隐式 zero-initialized 因为在文件范围内声明)则此 if 语句的内部 else 语句
if (x == y)
{
if (y == 1) {return -1;}
else {return 1}
}
将获得控制权,函数将在 return 1
被调用时获得。
注意函数参数没有用到
快速提问:
int x;
int y;
int function (int a, int b)
{
if (x == y)
{if (y == 1) {return -1;}
else {return 1;}}
else {return 1;}
}
为什么上面的代码要求我在 if-else 语句之外添加一个 return 值 我应该 returning 什么?
我认为这是一个一般的编译器警告,return
内部条件情况的情况未被考虑在内。
所以,这就是编译器“看到”的内容:
int function (int a, int b)
{
if condition
{...}
else {...}
}
... 编译器询问“return 在哪里?”。
您只需在函数代码的末尾添加 return 0; // not needed, only here for avoiding compiler warnings
就可以了。
如果你要格式化函数
int x;
int y;
int function (int a, int b)
{
if (x == y)
{
if (y == 1) {return -1;}
else {return 1}
else {return 1;}
}
您会看到缺少一个右大括号。
你至少要写
int function (int a, int b)
{
if (x == y)
{
if (y == 1) {return -1;}
else {return 1}
}
else {return 1;}
}
在这种情况下,returned 值取决于哪个条件的计算结果为真。
如果变量 x
和 y
尚未更改(最初它们是隐式 zero-initialized 因为在文件范围内声明)则此 if 语句的内部 else 语句
if (x == y)
{
if (y == 1) {return -1;}
else {return 1}
}
将获得控制权,函数将在 return 1
被调用时获得。
注意函数参数没有用到