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

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

4

4 回答 4

4

这主要是一个偏好问题——语法通常被认为是人类可读的形式,意思是“当 ix 不等于 (value) do (action) 并保持递增 ix”。这就是为什么它经常被输入!=直接“翻译”“不相等”的考虑。

对于大多数循环来说,使用哪一个并不重要,但是考虑使用<而不是!=减少发生溢出错误的机会,例如在使用时:

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

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

于 2013-05-29T05:29:28.103 回答
4

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

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

for (int i=1; i!=10; i+=2)
{
     cout << i << endl;
}
于 2013-05-29T05:47:26.003 回答
1

您可以使用其中任何一种,我认为在 C<中更常见。在 C++ 中,STL 增加了一个新的变化:

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

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

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

于 2013-05-29T06:00:21.273 回答
1

!=当您使用迭代器而不是整数索引时,这个习惯用法是必要的。如果您经常使用迭代器,它就会成为习惯。

于 2013-05-29T05:57:46.547 回答