C程序逻辑实现

标签 c logic implementation

我的 C 代码中有一个 if 条件。如果 if 条件为真,我需要调用 sleep(1) 系统调用并再次检查 if 条件。这必须最多进行 9 次。如果在这 9 次中的任何时候,if 条件失败,我应该从函数返回。如果 9 次到期,我应该调用另一个函数。为了更清楚,我将在下面编写伪代码。

function1()
{
  count = 0 
  label : if (condition)
  {
    count++
    sleep(1);
    if(count < = 9)
    goto label;
  }

  if(count > 9)
  {
    return;
  }

  function2(); /* if(condition) failed */
  return;
} /* End of function1() */

实现上述逻辑的最佳方式是什么。我不喜欢使用 goto 语句。

最佳答案

您已经实现了一个 for 循环。这将是完全等价的,除了即使第一个 condition 失败时 count 将为 1:

function1()
{
  for (count = 1; condition && count <= 9; count ++)
  {
    sleep(1);
  }

  if(count > 9)
  {
    return;
  }

  function2(); /* if(condition) failed */
  return;
} /* End of function1() */

虽然在 C 中,您通常从零开始计数,但这只是风格问题。

function1()
{
  for (count = 0; condition && count < 9; count ++)
  {
    sleep(1);
  }

  if(count >= 9)
  {
    return;
  }

  function2(); /* if(condition) failed */
  return;
} /* End of function1() */

编辑

还认为使用单个 return 比使用多个 so 更可取

function1()
{
  for (count = 0; condition && count < 9; count ++)
  {
    sleep(1);
  }

  if(count < 9)
  {
    function2(); /* if(condition) succeeded within 9 tries */
  }    
} /* End of function1() */

关于C程序逻辑实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5014272/

上一篇:c - C 中的总计

下一篇:c - 找到 d 方号?

相关文章:

c - 在双指针上使用 strcpy 时出现段错误

python - Pandas 数据框将逻辑应用于列计算

java - 在哪里可以找到 javax.validation.* 的实现?

java - Java 中的吃 bean 碰撞

objective-c - 在Objective-C xcode中实现.m文件的分配和初始化

python父类 'wrapping'子类方法

c - 有没有办法用按位检查 char * 是否为空

c - 结构体指针与实际对象

c - 为 Unix 域套接字中的多个客户端分配名称

python-3.x - 如何检查某个值位于哪个阈值水平之间?