我怀疑在这种情况下返回在C ++中是如何工作的。条件匹配后循环会发生什么,我们需要返回值。
some function(){
for( )//outer loop with i and other values
{
for( )// inner loop with i and other values {
some condition using if which on match return a value val (call it x here)
return x;
}
}
return -1
}
答案 0 :(得分:2)
循环没有“发生”。就像它一直一样,return
从函数返回。
循环蒸发成遗忘,就像return
语句之后的任何代码一样。
“发生”的唯一事情是你的自动存储持续时间对象(粗略地说,你的局部变量)将被自动销毁。
答案 1 :(得分:2)
return
语句,来自任何最深的if语句,循环或开关;将导致程序控制返回给调用者。对于非void函数,它可以返回一个值,或者只是退出当前函数而没有任何输出给调用者。
除了函数之外,return
语句可以类似地用于退出 lambda (自C ++ 11起)。语义保持不变。因此,如果您在lambda(或多级嵌套lambda)中看到return
语句,则可能不会从函数返回,但仅来自给定的lambda。 / p>
在这两种情况下,本地声明的变量都将超出范围,它们的内存(如果由某个指针保持)将无效。将调用析构函数(如果在堆栈上分配)。
答案 2 :(得分:-3)
您已嵌套for循环。但是函数本身返回的常量值为-1。也许你可以更清楚地了解你的问题