IIF

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » I » IIF

Syntax: IIF (Bedingung, Ausdruck_wenn_wahr, Ausdruck_wenn_falsch)
Typ: Funktion
Kategorie: Bedingungen

IIF liefert einen von zwei Werten zurück, abhängig davon, ob die Bedingung erfüllt ist oder nicht.

IIF liefert einen numerischen Wert, abhängig vom Ergebnis der Bedingungsauswertung. Die typische Anwendung ist mitten in einem Ausdruck; so wird vermieden, dass ein Bedingungsausdruck unnötig aufgeteilt werden muss.

IIF berechnet den Ausdruck nur, bis das Ergebnis feststeht. Das spart Zeit und kann auch verhindern, dass Ausdrücke ausgewertet werden, die ungültige Ergebnisse nach Auswertung von Bedingung hätten.

Beispiel 1:

DIM AS INTEGER a, b, x, y, z
a = (x + y + IIF(b > 0, 4, 7)) \ z

Dieser Code ist äquivalent zu:

DIM AS INTEGER a, b, x, y, z, temp
IF b > 0 THEN temp = 4 ELSE temp = 7
a = (x + y + temp) \ z

Es obliegt dem Programmierer, zu entscheiden, welche Form die günstigere ist.

Beispiel 2: Zufallsbedingt a oder b ausgeben

DIM AS INTEGER a, b
PRINT IIF (RND < .5, a, b)

Beispiel 3:
Wie bereits erwähnt, müssen alle Parameter numerischer Natur sein. Dies schließt allerdings auch Pointer ein, sodass über einen Umweg auch mit STRINGs gearbeitet werden kann.

DIM AS INTEGER a, b
PRINT "Ist a > b? Antwort: "; *IIF(a > b, @"Ja", @"Nein")
SLEEP

Unterschiede zu QB: neu in FreeBASIC

Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht IIF nicht zur Verfügung und kann nur über __IIF aufgerufen werden.

Unterschiede zu früheren Versionen von FreeBASIC: existiert seit FreeBASIC v0.12

Siehe auch:
IF...THEN, Ausdrücke und Operatoren, Bedingungsstrukturen