2012-05-02 33 views
3

正确使用的我正在一个C++类,现在,我知道,一个for循环会像这一点,但我不知道是否这是“正常”或“正确”的for循环

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

应该这不是要

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

我只是想知道,因为我知道一个for循环应该是一个反循环,但对于这一个不有次通过,我会控制量做的条件。

+2

太主观了一个问题,投票决定关闭。可能更好在http://programmers.stackexchange.com –

+0

@ RichardJ.RossIII令人惊讶的是,有可能建立一个合理的客观论点,支持'for'循环:) – dasblinkenlight

+0

我个人的经验法则是:如果运行索引在循环之后需要,使用while,否则使用。但是因为每一个都可以被表达,虽然它只是一个风格问题 – stefan

回答

6

是的,for循环的规则很简单。只要你符合规则,语法可以是任何你想要的。

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

5

严格地说,没有“正确”的方法来编写for循环:你可以省去三部分空白的任何组合(实际上,K建议让所有三个空白实现一个“永久”循环),并且不要求具有依赖于循环计数器的停止条件。

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

3

这很好,但作为风格我宁愿while循环。

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

1

他们都工作。

while声明是大多数人写它的方式,它很容易理解。 for陈述稍微短一点,但大多数人不得不看两次才能理解它在做什么。

2

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

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

有鉴于此,以令人惊讶的方式使用句法结构并不是最好的主意。

1

虽然我通常不会想到for环路仅限于具有预先指定的边界的计数循环,我会通常把它看成是一个在环路的increment部分直接参与了朝循环完成方向前进。

只是为了举例来说,我认为这是完全合理的,通过一个链表的东西,如走路:

for (ptr = list_head; ptr != NULL; ptr = ptr->next) 
    process(ptr->data);