检查for语句中的条件

时间:2015-02-07 14:26:27

标签: c search

我编写了一个函数,用于检查区间中是否存在数字。 停止搜索的最佳方法是什么?这一个:

for (i = a; i <= b; i++) {
  fi = f(i);
  if (fi == c) {
    j = i;
    break;
  }
}

还是这个?

for (i = a; (i <= b) && (IsFound == 0); i++) {
  fi = f(i);
  if (fi == c) {
    j = i;
    IsFound = 1;
  }
}

3 个答案:

答案 0 :(得分:1)

快速回答:break;更好

为什么,一旦达到中断,代码就会逃脱循环。但在第二选择中,您需要达到for循环条件检查状态

Quoting

  

break语句终止执行它出现的最近的封闭do,for,switch或while语句。控制传递给终止语句后面的语句。

代码说明

选项I

for ( i = a; i <= b; i++ ){
  fi = f ( i );
  if ( fi == c ){
     j = i;
     break; // Simply exit from here , no more continuing
  }
}

备选方案II

for ( i = a; (i <= b) && (IsFound == 0); i++ ) // Need to reach here for exit
{
  fi = f ( i );    
  if ( fi == c ){
    j = i;
    IsFound = 1; // you set flag here but need to continue till for loop condition checking
  }
}

答案 1 :(得分:0)

我会选择#1方式,因为:

  • 第二,你定义了一个新变量isFound并维护它。
  • 通过使用isFound变量检查i的每个值来增加开销。
  • 您将在结尾处进行额外的检查和增量,因为isFound变量将导致for循环中断。

答案 2 :(得分:-1)

Break是停止循环的最佳方法。

考虑一下你是否正在做很多工作,如果条件,你有更多的代码。如果在启用后使用该变量将执行该条件。 执行后它不会从循环中出来。

如果你使用休息时间。那个时间本身循环会破裂。它从循环中出来。