在 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 值取决于哪个条件的计算结果为真。

如果变量 xy 尚未更改(最初它们是隐式 zero-initialized 因为在文件范围内声明)则此 if 语句的内部 else 语句

    if (x == y)
    {
        if (y == 1) {return -1;}
        else {return 1}
    }

将获得控制权,函数将在 return 1 被调用时获得。

注意函数参数没有用到