这是一个循环吗?

时间:2016-07-14 14:05:54

标签: c loops semantics

这是循环,不是循环,还是循环而不是循环?如果你计算一个程序中的循环次数,你会算这个吗?

do {
   ...
}while(0);

我很好奇,因为我和一个有项目的人一起工作,要求他计算一个程序中的循环次数。

3 个答案:

答案 0 :(得分:7)

在C标准C11,章节§6.8.5,迭代语句中,列出了

  

迭代语句:

     

while ( 表达 ) statement
  do 声明 while ( 表达 ) ;
  for ( 表达式 opt ; 表达 opt ; 表达 opt ) statement
  for ( 声明表达式 opt ; 表达 opt ) statement

提到了do statement while ( expression ) ;,所以是,它是一个循环(迭代)语句无论它在特定实现中所做的迭代次数 /使用。

FWIW,这循环一次。

要添加更多说明,quoting from Wikipedia,(强调我的

  

循环是一系列语句,指定一次可能 连续执行多次。循环内部的代码(循环体,下面显示为xxx)遵循指定的次数,或者对于每个项目集合一次,或直到满足某些条件 ,或无限期地。

答案 1 :(得分:2)

从某种意义上说,是的,它是一个循环,但实际上没有。它在技术上是一个循环,因为你使用循环语法,但你实际上只是在你的“循环”中运行一次代码,然后破坏。我不会把它当作一个循环,因为你没有在你的程序中添加任何算法运行时,所以没有必要把它算作循环。注意:不要这样做,这是毫无意义和糟糕的编码实践。

编辑:在下面的评论中对Jeremy的信用,至少有一种情况,这种结构在C中有用:do { ... } while (0) — what is it good for?

答案 2 :(得分:0)

do {
   ...
}while(k);

现在,迭代次数取决于k的值,现在只有当k!=0kTrue时,您才能说它是一个循环。< / p>

所以它基本上是一个循环。