Ich habe die Erfahrung gemacht, dass man am besten dauerhaft versteht, was ein Quellcode-Schnipsel macht, wenn man es ausprobiert, modifiziert und genau beobachtet, was sich wann ändert.
Und natürlich: die Grundlagen und Syntax der jeweiligen Programmiersprache lernen.
Für C sollte das gut machbar sein, es ist so verbreitet und gut dokumentiert, dass der Wille Dokumentation zu finden mit Erfolg gekrönt sein wird.
Zum konkreten Fall:
"Was wird in der Variable gespeichert?": ein ganzzahliger Wert (typ: int).
Welcher Wert wird das sein? Nach den Regeln der Auswertung des ternären Operators in C wird das wohl "1" sein.
Warum "1"? Das führt zur Antwort auf die Teilfrage "Was genau passiert da?"
Da steht:
"der Wert der Variable 'i' sei gleich:" (i=)
- Wenn das Ergebnis der boolschen Auswertung des konstanten Wertes "1" "true" ist: die ganzzahlige Betrachtung der Auswertung des Terms "2<3"
- Wenn das Ergebnis der boolschen Auswertung des konstanten Wertes "1" "false" ist: die ganzzahlige Betrachtung der Auswertung des Terms "4<5"
Der ternäre Operator funktioniert grob wie folgt:
<Bedingung> "?" <True-Ausdruck> ":" <False-Ausdruck>
s. z. B. http://www.purl.org/stefan_ram/pub/ternaerer_c
Der Term "2<3" hat in der Auswertung ein boolsches Ergebnis ("true") welches ganzzahlig als "1" manifestiert wird.
Daher ist der Wert in "i" am Ende des Beispiels "1".