在for循环末尾加上";"的目的是什么?

75

我找到了以下代码:

int func_prim (int zahl) {
    int count;
    if (zahl < 0)
        return -1;

    for (count = 2; zahl % count != 0 && zahl >= count; count++);
    if (count == zahl)
        return 1;
    return 0;
}

此函数的目的是检查一个数是否为质数。

我不明白为什么for循环末尾要加上;

                                                            v
for (count = 2; zahl % count != 0 && zahl >= count; count++);

没有那个,代码就不能正常工作。

这是什么意思?


48
for循环结尾有一个分号是因为作者很邪恶!在这种情况下,应该将其放在单独的一行上。 - sh1
21
如果作者希望整个循环在一行上,可以使用 { } 来代替 ;,以表明意图是让循环为空,并且不包括后续的任何行。 - Eliah Kagan
22
有时候,当我想强调循环体的空白时,我会写成 for (...) continue; - sh1
8
但是这种使用分号的方法有两个问题:(1)它看起来像一个错误,可能会被一些好心的开发者误删;(2)如果你没有注意到它,你会期望下面的语句会被“循环”。后者是一个特别危险的情况,因为程序员学习了不要特别注意行末的分号;就像读者不太注意一句话是否以句号结尾一样。 - Dawood ibn Kareem
6
@Marco13 为何自动假设原作者无知?你不喜欢这种写法,很好。但是仍有许多人更喜欢使用for循环的方法:毕竟有初始化、停止条件和迭代,这些都可以自然地通过for结构表达出来。虽然你不同意,但我相信作者知道什么是while循环。顺便提一下,这也是为什么团队需要编码规范的原因。 - coredump
显示剩余13条评论
11个回答

0

它表示for循环的使用情况。它不能是空的。至少应该包含一个语句。分号是迭代执行的空语句。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接