正确使用for循环

时间:2012-05-02 22:04:38

标签: c++ loops for-loop

我现在正在学习c ++课程,我知道for循环会像这样工作,但我想知道它是“正常”还是“正确”

for (int i = 0; getline(cin, input); i++)

这应该是

int i = 0;
while (getline(cin, input))
    i++;

我只是想知道,因为我知道for循环应该是一个计数器循环,但这个循环的条件与通过i控制的次数没有关系。

6 个答案:

答案 0 :(得分:6)

是的,for循环的规则非常简单。只要您符合规则,语法就可以是您想要的任何内容。

在这两者中,只需选择您认为最具可读性的那个。

答案 1 :(得分:5)

严格来说,没有“正确”的方式来编写for循环:你可以将这三个部分的任意组合留空(实际上,K& R建议将所有三个部分留空以实现“永远“循环”,并没有硬性要求停止条件取决于循环计数器。

for循环优于while循环的一个优点是,您可以在身体内自由使用continue,而不必担心忘记增加计数器。这可能有助于包含大量嵌入式continue语句的循环的可读性。

答案 2 :(得分:3)

很好,但是作为风格的问题,我更喜欢while循环。

For循环通常用于有界迭代,其中您事先知道迭代次数,而while循环用于更一般的情况。

答案 3 :(得分:2)

两者都是一样的。然而,它不仅仅是关于他们做什么,而是关于如何让“人”更容易理解代码。

您可以将源代码视为详细文档,讨论如何执行特定任务。实际上非常详细,即使是编译器,即哑机,也能理解它。换句话说,你为其他人编写代码,编译成机器代码是一个令人愉快的副作用。

考虑到这一点,以令人惊讶的方式使用句法结构并不是最好的主意。

答案 4 :(得分:1)

他们都工作。

while语句是大多数人写的方式,而且很容易理解。 for语句稍短,但大多数人都要看两次才能理解它在做什么。

答案 5 :(得分:1)

虽然我通常不认为for循环被限制为具有预先指定边界的计数循环,但我 通常认为它是{ {1}}循环的一部分直接涉及循环完成。

仅举例来说,我认为通过以下方式浏览链接列表是完全合理的:

increment