【问题标题】:c++ bool While on vectorc++ bool While on vector
【发布时间】:2017-05-06 17:03:41
【问题描述】:

我是 C++ 新手,所以这可能很常见。

我有一个std::vector<int> v;

我想看看这个向量中是否为 0。我认为这是有效的:

bool l = true;
    i = 0;
    while((l = true) && (i<v.size()))
    {
        if (v[i] == 0) l = false;
        ++i;
    }

但即使我的向量是 1,2,3,0,2,0,这个 l 仍然是 true。为什么?我该如何解决这个问题?

【问题讨论】:

    标签: c++ vector boolean


    【解决方案1】:
    while((l = true) && (i<v.size()))
    

    实际上是一个任务。你应该写更安全的比较代码

    while((true == l) && (i<v.size())
    

    请注意,在这种情况下,如果您不小心输入了 = 而不是 ==,则会出现编译错误而不是损坏的代码。

    【讨论】:

    • 你不应该这样做。只需写 while (l &amp;&amp; ...) 而不是明确比较 true
    • 其实l 完全不需要,写if(0 == v[i]) {break;} 就可以了。但我想指出与常量的安全比较。
    • @VTT:嗯,尤达。现在不是 5 月 4 日了!
    • 括号太多,不管你喜欢哪种变体。
    猜你喜欢
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2017-11-27
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多