我现在正在学习c ++课程,我知道for循环会像这样工作,但我想知道它是“正常”还是“正确”
for (int i = 0; getline(cin, input); i++)
这应该是
int i = 0;
while (getline(cin, input))
i++;
我只是想知道,因为我知道for循环应该是一个计数器循环,但这个循环的条件与通过i控制的次数没有关系。
答案 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