【发布时间】:2015-07-02 09:16:55
【问题描述】:
我找到了以下代码:
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++);
否则,代码将无法正常工作。
解释是什么?
【问题讨论】:
-
for循环末尾有分号,因为作者是邪恶的!在这种情况下,它应该独立运行。
-
@sh1 或者,如果作者希望将整个循环放在一行上,可以使用
{ }代替;来记录循环有一个空主体而不是有意的包括任何后续行。 -
@EliahKagan,有时当我想强调循环体的空虚时,我会写
for (...) continue;。 -
@coredump 但是以这种方式使用分号的两个问题是(1)它看起来像是一个错误,一些好心的开发人员可能有一天会删除; (2) 如果您没有看到它,您会认为它下面的语句将是“循环”的语句。后者特别危险,因为程序员学会了不要特别注意行尾的分号;就像人们阅读时往往不会注意到一个句子是否以句号结尾
-
@Marco13 为什么自动假设原作者是无知的?你讨厌这种写作,很好。但是您会发现很多人更喜欢
for循环方法:毕竟,for结构自然地表达了初始化、停止条件和迭代。你不同意,但我相信作者知道while循环是什么。顺便说一句,这就是为什么您需要团队中的编码约定。