Ausgabe mehrere Post und Pre-Schritte in einer Anweisung [Duplikat]
-
26-09-2019 - |
Frage
Diese Frage bereits eine Antwort hier:
Ich bin neu in C-Sprache so plz sum1 helfen Sie mir. Ein C-Code geschrieben
int i=3;
printf("%d",++i + ++i);
Complier GVS O / P = 9. Wie?
Danke im Voraus
Lösung
Die Ergebnisse sind nicht definiert. Sie modifizieren eine Variable mehr als einmal in einem Ausdruck (oder Sequenzpunkt um genauer zu sein) .
eine Variable mehr als einmal ändert zwischen Sequenzpunkten nicht definiert ist, so tut es nicht.
Es könnte Ihr Compiler sein, denn dieser spezielle Fall entscheidet evalate
++i + ++i
als
- erhöht den letzten
++i
, 4 ergibt, so dass i 4 sein - inkrementieren den ersten
++i
, wodurch man 5, so dass i 5 sein (wie im Stand der Schritt i als 4 nach links, um es zu 5 Inkrementieren) - Summe der beiden Werte, 4 + 5.
Ein weiterer Compiler, oder wenn Sie die Optimierungsstufe ändern, oder wenn Sie den Code leicht ändern, könnten unterschiedlich ausfallen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow