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

why not use < but != in loop for c++?

本文关键字:循环 用于 C++ lt 而是 为什么不      更新时间:2023-10-16
for (string::size_type ix = 0; ix != str.size(); ++ix)

为什么不使用!=代替<在循环的c++ ?

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

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

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

虽然很明显在这种情况下循环将永远不会终止,但如果252来自其他来源,则可能不会终止。因此,最好始终使用<作为预防习惯。

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

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

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

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

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

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

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

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