in C/C++, die zweite Anweisung inUndefiniertes Verhalten, oder: Hat Swift Sequenzpunkte?
int i = 0;
int j = i++ + i++ + ++i;
ruft sowohl
- unspezifiziert Verhalten, weil die Reihenfolge der Auswertung der Operanden nicht spezifiziert ist, und
- undefiniertes Verhalten , weil die Nebenwirkungen auf das gleiche Objekt
i
relativ zueinander nicht sequenziert sind.
Siehe zum Beispiel
, nun da Swift als sicher Sprache entwickelt wurde, was die hier entsprechende Situation? Ist das Ergebnis von
var i = 0
let j = i++ + i++ + ++i
gut definiert? Kann man aus der Sprachreferenz im Swift Buch schließen, dass j == 4
?
Dies ist eine gute Frage zu stellen, aber leider habe ich das Gefühl, dass die Antwort derzeit "niemand weiß" ... – jtbandes
@jtbandes: Danke (aber jemand stimmt nicht zu :) - Sie haben wahrscheinlich Recht. Ich habe dies jetzt im Apple Developer Forum gepostet, vielleicht gibt es ein Feedback: https://forums.developer.apple.com/thread/20001. –
Super - Chris Lattner hat geantwortet. Ich habe insgeheim gehofft, dass die Antwort "von links nach rechts" war :) – jtbandes