c++ - for循环中的多个条件

标签 c++ c

<分区>

在今天的代码审查中,我遇到了一个看起来像这样的循环:

for(int i=0; i<some_value && !found ; ++i)
{
  if(some logic)
    {
    do_stuff();
    found=true;
    } 
}

我通常像这样编写这种性质的代码:

for(int i=0; i<some_value; ++i)
{
  if(some logic)
    {
    do_stuff();    
    break;
    } 
}

我从事编程多年,直到今天才在 for 循环中看到不止一个条件。我知道这是完全有效的代码,因为 && 只是被评估并返回结果,我从来没有想过在 for 语句 inside 中使用多个条件而不是 body。

直到今天我才看到这种情况,因此必须假设它不是很常见。

在 for 循环检查中使用多个条件时是否需要注意任何陷阱?

最佳答案

有些“极端分子”breakcontinue 视为"accursed" goto 的另一个词.许多 Pascal/Delphi 程序员属于这一派别。

是否应使用此类标志取决于您的编码约定。我想如果你在非学术环境中编写这样的代码,人们就不会认真对待你。注意!

当然,如果你想退出外层循环,如果你的语言不知道带标签的循环,你就需要这样的标志。例如 JavaScript 和 Java(我认为 PHP 也是)支持带标签的循环。

我不认为有任何陷阱。如果您的编译器不是太笨,它将确定此类标志的用法,并重写代码以使用正确的跳转。

使用这样的标志(至少)有一个好处:证明代码的正确性会更容易,例如使用 Hoare calculus .

关于c++ - for循环中的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079235/

相关文章:

python - 从 C++ 获取 python 可执行文件的完整路径

c++ - 为什么 fread 提前到达 EOF?

c - do while 循环 C 编码错误

对静态变量的困惑

c++ - "Error C1083: Cannot open include file"但我有包含文件的路径

c++ - 从同一来源分配不同的值。奇怪的

将动态分配的 char* 字符串复制到新的 char* 字符串中

c - 如何循环勾股定理程序?

c++ - 浮点运算

c++ - 我的变量神秘的写违规