为什么不使用<但是!=循环中的c ++?

时间:2013-05-29 01:07:50

标签: c++ loops

for (string::size_type ix = 0; ix != str.size(); ++ix)

为什么不在C ++的循环中使用!=而不是<

4 个答案:

答案 0 :(得分:4)

这主要是一个偏好问题 - 语法通常被认为是人类可读的形式,意味着“而ix不等于(值)do(动作)并且保持递增ix”。这就是为什么它经常输入为!=来直接“翻译”“不等于”的考虑因素。

对于大多数循环而言,使用哪一个并不重要,但是考虑到使用<而不是!=可以减少发生溢出错误的可能性,例如使用时:

for(int i = 0; i != 25; i += 2)

虽然在这种情况下很明显,如果252来自另一个来源,它可能永远不会终止。因此,最好始终使用<作为预防习惯。

答案 1 :(得分:4)

why not use != instead of < in loop for C++?

有时这会导致一些难以捕获的错误。如果我想打印低于10的奇数,那么!=不是正确的选择。以下循环运行永远。

for (int i=1; i!=10; i+=2)
{
     cout << i << endl;
}

答案 2 :(得分:1)

使用迭代器而不是整数索引时,!=成语是必需的。如果你经常使用迭代器,那就习惯了。

答案 3 :(得分:1)

您可以使用其中之一,而在C中,我认为<更为常见。在C ++中,STL增加了一个新的转折点:

for(FooType::iterator i = foo.begin(); i != foo.end(); i++)
    ... do stuff ...

应该使用!=,因为在某些(大多数?)情况下,<甚至不会为迭代器类型定义!=。所以你可能也想在非STL循环中使用<,只是为了保持一致性。

注意:我通常使用{{1}},因为正如其他答案所说,这意味着您不能错过哨兵值。但这没什么大不了的;如果你意外地错过了哨兵,那么你已经有了一个错误。