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.
- 'Bedingung' ist ein numerischer Ausdruck, der entweder gleich oder ungleich Null sein kann. Ist der Wert des Ausdrucks gleich Null, so ist die Bedingung nicht erfüllt.
- 'Ausdruck_wenn_wahr' wird als Ergebnis der Funktion zurückgegeben, wenn die Bedingung erfüllt wurde. Es muss ein numerischer Ausdruck sein, also eine Ganzzahl, ein Fließkommawert oder ein Pointer.
- 'Ausdruck_wenn_falsch' wird als Ergebnis der Funktion zurückgegeben, wenn die Bedingung nicht erfüllt wurde. Es muss ein numerischer Ausdruck sein, also eine Ganzzahl, ein Fließkommawert oder ein Pointer.
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