Referenz - IIF
Syntax: IIF (Bedingung, Ausdruck_wenn_wahr, Ausdruck_wenn_falsch)
Typ: Funktion
Kategorie: Programmablauf
IIF liefert einen von zwei Werten zurück, abhängig davon, ob die Bedingung erfüllt ist oder nicht.
- 'Bedingung' ist ein Ausdruck oder Vergleich, 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.
- 'Ausdruck_wenn_falsch' wird als Ergebnis der Funktion zurückgegeben, wenn die Bedingung nicht erfüllt wurde.
IIF liefert einen 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:
Bis einschließlich FreeBASIC v0.24 mussten alle Parameter numerischer Natur sein. Dies schließt auch Pointer ein, sodass über einen Umweg auch mit STRINGs gearbeitet werden konnte.
' Verwendung von Strings bis fbc 0.24
DIM AS INTEGER a, b
PRINT "Ist a > b? Antwort: "; *IIF(a > b, @"Ja", @"Nein")
SLEEP
Seit FreeBASIC v0.90 sind STRINGs und UDTs problemlos nutzbar.
' Verwendung von Strings ab fbc 0.90
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:
- Seit FreeBASIC v0.90 können auch STRINGs und UDTs verwendet werden; davor mussten alle Ausdrücke numerisch sein.
- IIF existiert seit FreeBASIC v0.12
Siehe auch:
IF...THEN, Ausdrücke und Operatoren, Bedingungsstrukturen
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|