Hallo,
führt abhängig vom boolschen Resultat ja nein
einen Anweisungsblock ausberechnet abhängig vom boolschen Resultat nein ja
entweder Ausdruck A oder Ausdruck BBei den Beiden würde ich mich nicht festlegen :)
aber nur, weil du die formale Bedeutung nicht erkennst oder nicht scharf zwischen Anweisung (statement) und Ausdruck (expression) unterscheidest.
Eine Anweisung kann ein Ausdruck (Funktionsaufruf, Zuweisung) oder eine Kontrollstruktur (if, while, switch, ...) sein.
Ein Ausdruck dagegen ist eine den Syntaxregeln entsprechende Verkettung von Operanden (Konstanten oder Variablen), Operatoren und Funktionsaufrufen, die nach der Auswertung ein Ergebnis liefert.
Das hätte ich in der Gegenüberstellung auch noch erwähnen können: Ein Ausdruck kann (unabhängig vom ternären Operator) keine Kontrollstrukturen enthalten, der Anweisungsblock eines if-Statements schon.
Wenn man "Anweisungsblock" nicht notwendigerweise als { } umschlossenes Konstrukt bezeichnet
Aber genau das *ist* ein Anweisungsblock: Mehrere Anweisungen, die mit geschweiften Klammern zu einem Block gruppiert sind, so dass dieser Block in einigen Kontexten wieder wie eine einzelne Anweisung behandelt werden kann.
und "berechnet" nicht notwendigerweise den folgenden Anweisungsblock ausnimmt
Der Begriff "berechnet" ist nicht optimal gewählt; "auswerten" (evaluate) wäre besser und üblicher. Viel wichtiger als das Berechnen war in diesem Satz aber der Begriff "Ausdruck".
if(true) {
$var = 1;
} else {
$var = 2;
}$var = (true ? 1 : 2);
Das ist der Fall, den ich gemeint habe: Die Anweisungen im if- und im else-Zweig unterscheiden sich in genau einem Teilausdruck. Dann kann dieser Teilausdruck ideal mit dem Fragezeichen-Operator substituiert werden.
So long,
Martin
--
Ein Patriot ist jemand, der bereit ist, sein Land gegen seine Regierung zu verteidigen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(