Koo*_*Pad 3 c++ loops while-loop
表达式之间有什么不同:
int a, b;
bool p = false;
while (cin >> a >> b and not p) { // code }
// and:
int a, b;
bool p = false;
while (not p and cin >> a >> b) { // code }
Run Code Online (Sandbox Code Playgroud)
不同之处在于,在C++中,在评估布尔条件时会遵循一个快捷方式.
如果是and,您知道如果第一个语句为false,则整个输出为false.在这种情况下,根本不会评估第二个条件.同样,如果语句中的第一个or语句的计算结果为true,则不计算第二个语句.
那么为什么这很有用,除了在评估第二个语句时节省的费用.其中一种情况是,AND如果第一个表达式为假,则可能不希望评估第二个表达式.这样做的一个原因是,如果第一个语句为假,则第二个表达式可能是错误定义的.
例如,在while循环中访问向量元素时,您可能会遇到检查某些条件的情况.除此之外,您还必须注意确保索引在向量的限制范围内.所以你可以写
while (i < vector.size() && condition(vector[i]))
Run Code Online (Sandbox Code Playgroud)
您可以看到,如果第一部分的计算结果为false,则程序在访问vector[i]条件时会崩溃.但是,它没有达到这一点.这只是短路运营商的众多用途之一.