C 这是环路吗?
这是一个循环,不是一个循环,或者既是一个循环又不是一个循环?如果你在计算程序中的循环数,你会计算这个吗C 这是环路吗?,c,loops,semantics,C,Loops,Semantics,这是一个循环,不是一个循环,或者既是一个循环又不是一个循环?如果你在计算程序中的循环数,你会计算这个吗 do { ... }while(0); 我很好奇,因为我正在和一个有项目的人一起工作,这个项目要求他计算程序中的循环数。在C标准中,C11,第§6.8.5章,迭代语句,列出了它 迭代语句: while(expression)语句 dostatementwhile(expression) for(expression opt;expression opt;expression opt)语
do {
...
}while(0);
我很好奇,因为我正在和一个有项目的人一起工作,这个项目要求他计算程序中的循环数。在C标准中,
C11
,第§6.8.5章,迭代语句,列出了它
迭代语句:
while(
expression)语句
do
statementwhile(
expression)代码>
for(
expression opt;expression opt;expression opt)语句
for(
声明表达式opt;表达式opt)语句
do语句while(表达式)提到了code>,因此是的,它是一个循环(迭代)语句,与它在特定实现/使用中进行的迭代次数无关
FWIW,这个循环一次
要添加更多说明,(重点是我的)
循环是一系列语句,指定一次,但可以连续执行多次。循环“内部”代码(循环主体,如下所示为xxx)遵守指定次数,或对每个项集合执行一次,,或直到满足某个条件,或无限期执行
从某种意义上说,是的,它是一个循环,但实际上不是。从技术上讲,它是一个循环,因为您使用的是循环语法,但实际上您所做的只是在“循环”中运行代码一次,然后中断。我不会把它算作循环,因为你没有在程序中添加任何算法运行时,所以把它算作循环是没有意义的。注意:不要这样做,这是毫无意义和糟糕的编码实践
编辑:Jeremy在下面的评论中,至少有一种情况下此构造在C中很有用:
现在迭代次数取决于k
的值,现在你不能只在k=0
或如果k
为True
所以它基本上是一个循环。这是一个while循环,尽管值为假,所以我认为它是。@Richie显然是一个很好的链接,但在这里不是一个复制品。编译器可能会完全优化掉while
构造,所以编译后的二进制文件中只剩下…
部分。@MichaelWalz-re:“为什么您需要知道……”
,家庭作业,以确保您实际上是在询问“循环”的定义“。在某种程度上,存在任何不确定性或分歧,这是一个意见问题,因此不适用于SO问题。这也是一个在几乎每个宏中都广泛使用的结构。@KerrekSB至少,人们希望如此。”。事实上,许多宏都没有这个功能……当然,除非某些条件在内部“运行”一个“continue”,然后您运行的时间超过once@KevinDTimm:你能举个例子并链接到它吗?所有的循环语句都必须也是循环吗?@vjb单词可能会很棘手。这显然是一个循环语句,只进行了一次迭代。
do {
...
}while(k);