In C/C++, la seconda memoria diComportamento non definito o: Swift ha punti sequenza?
int i = 0;
int j = i++ + i++ + ++i;
invoca sia
- comportamento specificato, perché l'ordine di valutazione degli operandi è specificata, e
- comportamento indefinito , perché gli effetti collaterali sullo stesso oggetto
i
sono non correlati l'uno rispetto all'altro.
veda ad esempio
Ora, dato che la Swift è stato progettato come un linguaggio sicura, qual è la situazione corrispondente qui? Il risultato è
var i = 0
let j = i++ + i++ + ++i
ben definito? Si può concludere dal riferimento alla lingua nel libro Swift che j == 4
?
Questa è una buona domanda da porre, ma sfortunatamente ho la sensazione che la risposta sia "nessuno lo sa" ... – jtbandes
@jtbandes: Grazie (ma qualcuno non è d'accordo :) - Probabilmente hai ragione. Ora ho pubblicato questo messaggio nel forum degli sviluppatori Apple, forse questo mi dà un feedback: https://forums.developer.apple.com/thread/20001. –
Impressionante - Chris Lattner ha risposto. Speravo segretamente che la risposta fosse "da sinistra a destra" :) – jtbandes