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

War es hilfreich?

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
scroll top