【问题标题】:What happens if we use return 1 in if statement that is inside a loop?如果我们在循环内的 if 语句中使用 return 1 会发生什么?
【发布时间】:2019-04-20 05:37:42
【问题描述】:
 while(str[i]!='\0')
{
     if(str[i]!=str1[i])
     {
           printf("not equal");
           return 1;
       }
       i++;
}
printf ("equal");
return 0;

如果我们使用 return 1 会发生什么。 return 1 会终止 if 条件还是整个循环?

【问题讨论】:

  • 请标记一种编程语言,以便人们可以找到您的问题。
  • 会发生什么取决于调用return范围return 使控件在调用 函数 之前立即停止的地方拾取。 (在函数调用开始时压入堆栈的帧(或基)指针中存储的地址)如果在main 中调用return,您的程序会将控制权返回给shell。如果从另一个函数 1 调用的函数 2 中调用,则控制返回到函数 1。
  • 那么如果我使用 return 0 而不是 return 1 有什么区别呢?
  • @user11386822 如果您在 main 函数中,则没有真正的区别(如果它不是 0,则表明您是否因错误退出程序)。否则取决于你如何使用函数的返回值。
  • @DavidC.Rankin 您会考虑将您的评论转化为答案吗?看来这是正确的答案,认出来就好了

标签: c return


【解决方案1】:

存在当前作用域

例如

int foo()
{
  return 42;
}


int main()
{
   int n = 0;
   do
   {
     n = foo();
     printf("received %d\n",n); /* will print "received 42" */
   }
   while (n != 42) // will quit since n == 42

   return 0; // returns 0 to the operating system
}

【讨论】:

  • A return 语句终止当前 函数 的执行并将控制权返回给函数的调用者 (C 2018 6.8.6.4 2)。它不仅仅退出当前的范围。一个函数中可能存在嵌套范围,并且经常存在嵌套范围,因为代码块出现在其他代码块中,通常作为ifforwhile 和类似语句的一部分。 return 语句不仅仅终止这些范围中的任何一个;它终止了整个函数。
  • @EricPostpischil 是的,我同意,也许我的措辞不够准确,但它是针对 OP 的问题“如果我们在循环内的 if 语句中使用 return 1 会发生什么?”并且一般不返回语句。
猜你喜欢
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多