if/else und if/elseif
Wenn ich einen Anweisungsblock so:
if (/*condition here*/){ }
else{ }
oder so:
if (/*condition here*/)
else if (/*condition here*/) {}
else if (/*condition here*/) {}
Was ist der Unterschied?
Scheint es, dass mit if/else, wenn ein Teil ist für den wahren Zustand und der else-Teil ist für alle anderen möglichen Optionen (false). Eine else-if-wäre nützlich für eine Reihe von Bedingungen. Dies ist mein Verständnis, gibt es nichts mehr, das ich beachten sollte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Situation ein:
Wenn die Bedingung in der obigen Aussage falsch ist, dann werden die Anweisungen im else-block wird immer ausgeführt.
Situation b:
Wenn 'Bedingung' false ist, dann werden die Anweisungen im else-if-block wird nur ausgeführt, wenn bedingung2 wahr ist.
Die Anweisungen im else-block wird ausgeführt, wenn bedingung2 falsch.
Ohne "elseif" syntax, die Sie schreiben müssten, Kette von if-Anweisungen für die Verarbeitung eines von mehreren möglichen Ergebnissen auf diese Weise:
stattdessen kann man schreiben
ist komplett das gleiche wie die Vorherige, aber sieht viel schöner und ist viel einfacher zu Lesen.
else if
side-Effekt (d.h. er kommt frei). In anderen Worten, es gibt keineelse if
syntax, es ist nurif
undelse
hier.else if
und Sie nicht haben, um alle ändern zu syntax, richtig? Vergleichen Sie dies mit Ruby/Perl/Python etc (die Sprachen, die mit Blöcken), und Sie haben neue Regeln in die syntax (es sei denn, Sie nichts dagegen erhöhte Schachtelung).if-else-if
Kette verhält sich gleich, egal, wie Sie eingerückt.Viele Sprachen haben eine Grammatik wie folgt aus (hier: ECMAScript Language Specification, also JavaScript):
Also den Zweigen eines ifStatement enthalten einen block von Anweisungen (Block) oder eine der anderen Anweisungen (außer Block). Das bedeutet, dass diese gültig ist:
Und als Anweisungsliste enthalten möglicherweise nur eine einzige Anweisung, diese Beispiele sind äquivalent zu dem vorherigen:
Und wenn wir ersetzen
otherStatement
durch eine zusätzliche IfStatement, bekommen wir dies:Der rest ist nur code-Formatierung:
Betont wird, was Gumbo sagten.
Auch, wenn es in einer Sprache eine echte elif /elsif /elseif (sagen, eine "echte" else-if-Anweisung, statt eine Art verschachtelte Verkettung versteckt durch formatieren), dann kann der compiler easly emittieren einen einzelnen Knoten in einen Abstrakten Syntax Baum (oder ähnlich, siehe http://en.wikipedia.org/wiki/Abstract_syntax_tree) statt der Schachtelung Ihnen.
Um ein Beispiel zu geben:
Sagen in C/C++ Sie haben:
Dann der compiler Aufbau eines AST-Knoten wie dieser:
Aber wenn die Sprache der Wahl ist eine echte if-else:
Dann der AST konnte mehr einfach wie folgt Aussehen:
In einer solchen Sprache, einer "if else" würde nur möglich sein, wenn Klammern sind nicht zwingend erforderlich:
Entsprechenden AST (wenn Klammern sind nicht zwingend erforderlich):
Damit könnte CFG-Analyse (http://en.wikipedia.org/wiki/Control_flow_graph) leichter zu implementieren (obwohl es vielleicht keine tatsächliche Optimierung profitieren; so ist es imho würde nur profitieren die faulen Programmierer :D).
else if
im Grunde bedeutet, dieelse
Teilif
ist ein weitererif
- Anweisung.if/else if /else -
if/else-und if/else, wenn auch, wie dies
Gegeben eine einzelne variable ein, verwenden Sie die einfache
if-else
Struktur. Wenn es mehrere Variablen, und Sie haben einen anderen Pfad zu führen für die verschiedenen Möglichkeiten, die Sie verwendenif-else if-...-else
. Beachten Sie, dass die letzteren endet auch mit einemelse
- Anweisung.Sie schon gab die Antwort selbst. if/else ist für true/false Ergebnis, wie ein int=2 oder alle anderen möglichen int-Wert, und if/elseif ist für mehr als 2 Ergebnisse, wie ein int=2, und int=3 und so weiter.
Es auch Gruppen, die den Zusammenhang der Variablen. Sie könnte prüfen, jedes einzelnes Ergebnis wie
Mit if/else/elseif-es ist besser lesbar.
wenn Sie überprüfen möchten weitere Bedingung, die wir verwenden können, wenn..elseif. einzige Bedingung die wir dann verwenden können, wenn oder if...else.
Hier kann ich nicht in der Lage, laden Sie die vollständige Erklärung mit Beispiel, so gehen Sie bitte über folgende links.
if..else-Anweisung details
http://allinworld99.blogspot.in/2016/02/ifelse-flow-chart-with-easy-example.html
, wenn...elseif details
http://allinworld99.blogspot.in/2016/02/flow-chart-with-example-for-if-then.html