mi sono imbattuto la seguente costruzione in C++:Operatore | = per un valore booleano in C++
bool result = false;
for(int i = 0; i<n; i++){
result |= TryAndDoSomething(i);
}
ho supposto che questo |=
era una scorciatoia per l'operatore OR, e che result
sarebbe uguale true
alla fine se almeno una di queste chiamate a TryAndDoSomething
ha restituito true
.
Ma ora mi chiedo se più di una chiamata può effettivamente restituire true
. Infatti se si estende l'operazione:
result = result || TryAndDoSomething(i);
Poi il metodo sarà chiamato solo se ritorno valutata per false
, cioè, se nessun altro chiamata prima restituito true
. Pertanto, dopo una chiamata che restituisce true
, non verrà effettuata alcuna altra chiamata.
Questa è l'interpretazione corretta?
È possibile testarlo facilmente. L'ho appena fatto, e sembra che tutte le chiamate siano fatte, non solo la prima. –