Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 这是环路吗?_C_Loops_Semantics - Fatal编程技术网

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
statement
while(
expression

for(
expression opt;expression opt;expression opt
)语句
for(
声明表达式opt;表达式opt
)语句

do语句while(表达式),因此是的,它是一个循环(迭代)语句,与它在特定实现/使用中进行的迭代次数无关

FWIW,这个循环一次

要添加更多说明,(重点是我的)

循环是一系列语句,指定一次,但可以连续执行多次。循环“内部”代码(循环主体,如下所示为xxx)遵守指定次数,或对每个项集合执行一次,,或直到满足某个条件,或无限期执行


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

编辑:Jeremy在下面的评论中,至少有一种情况下此构造在C中很有用:

现在迭代次数取决于
k
的值,现在你不能只在
k=0
或如果
k
True


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

这是一个while循环,尽管值为假,所以我认为它是。@Richie显然是一个很好的链接,但在这里不是一个复制品。编译器可能会完全优化掉
while
构造,所以编译后的二进制文件中只剩下
部分。@MichaelWalz-
re:“为什么您需要知道……”
,家庭作业,以确保您实际上是在询问“循环”的定义“。在某种程度上,存在任何不确定性或分歧,这是一个意见问题,因此不适用于SO问题。这也是一个在几乎每个宏中都广泛使用的结构。@KerrekSB至少,人们希望如此。”。事实上,许多宏都没有这个功能……当然,除非某些条件在内部“运行”一个“continue”,然后您运行的时间超过once@KevinDTimm:你能举个例子并链接到它吗?所有的循环语句都必须也是循环吗?@vjb单词可能会很棘手。这显然是一个循环语句,只进行了一次迭代。
do {
   ...
}while(k);