Considera il seguente ciclo (in Swift - ma la mia domanda è indipendente dalla lingua):
var index = standardizedTimeSpans.count - 1
while index >= 0 && timeSpan < standardizedTimeSpans[index] {
index--
}
index++
Nel codice precedente, la variabile standardizedTimeSpans è un array di Double e la variabile timeSpan è un Double.
Il ciclo precedente può diminuire il valore dell'indice fino a un massimo di -1. Se la mia espressione condizionale per l'istruzione while è stata ordinata al contrario (cioè timeSpan < standardizedTimeSpans[index] && index >= 0
), un errore di runtime si verificava con l'array fuori limite nel caso in cui l'indice raggiungesse -1.
La mia domanda:
Questo codice è considerato "sicuro"? In altre parole, esiste il rischio di una modifica del compilatore che non esegua necessariamente la valutazione del condizionale da sinistra a destra? Ovviamente, l'alternativa è valutare le condizioni separatamente e un'espressione di interruzione nel ciclo.