即使a被证明为假,“ while(bool a && bool b)”会同时检查a和b吗?

问题描述 投票:0回答:1

[在某些情况下,我将不得不遍历数组/向量来寻找满足涉及元素值的条件的元素。过去,我会与[[ C0]语句,但最近我看到了一段看起来更简单的代码。确切地说:

我曾经这样做:

for

现在对此感到好奇:

if

[我喜欢这个定义,它简短一些,实际上我相信它更容易阅读,但是令我困扰的是向量为空的情况。

我不确定for( int i = 0; i < vector.size(); i++ ) if( condition[i] ) do_stuff; 处理布尔值的方式,它是否检查第一个条件,如果错误则用于第二个条件?还是会同时检查两者?如果真是这样,那应该是错误的,因为我正在检查不存在的元素上的条件。

在空载体上尝试代码后,它编译并运行得很好,只是为了确保我也尝试过此方法:

int i = 0;
while( i < vector.size() || condition[i] )
    i++;

它也很好用。

但是对我来说,检查不存在的值的条件似乎仍然不完全正确,我不确定是否应该使用它。可以吗?还是我应该去找别的东西?

任何帮助都会很棒。

c++ boolean boolean-operations
1个回答
2
投票

是,||进行短路评估。

© www.soinside.com 2019 - 2024. All rights reserved.