me topé con la siguiente construcción en C++:operador | = para un valor booleano en C++
bool result = false;
for(int i = 0; i<n; i++){
result |= TryAndDoSomething(i);
}
supone que este |=
era un acceso directo para el operador OR, y que result
sería igual true
al final si al menos una de estas llamadas a TryAndDoSomething
había devuelto true
.
Pero ahora me pregunto si más de una llamada realmente puede devolver true
. De hecho, si extendemos la operación como:
result = result || TryAndDoSomething(i);
Entonces se llamará el método sólo si el retorno evaluado para false
, es decir, si no hay otra llamada antes volvieron true
. Por lo tanto, después de una llamada que devuelve true
, no se realizará ninguna otra llamada.
¿Es esta la interpretación correcta?
Puede probarlo fácilmente. Acabo de hacerlo, y parece que se hicieron todas las llamadas, no solo la primera. –