wenn b ungleich der Konstante c ist, so soll a zu 0 werden und
wenn b gleich der Konstante c ist, so soll a zu 1 werden
Code: Alles auswählen
#c=2
Define.a a,b
b=0
a=Sign(b&#c) ; wenn b<>c ist, so soll a=0 werden
b=2
a=Sign(b&#c) ; wenn b=c ist, so soll a=1 werden
Das Makro nimmt sehr viele Zuweisungen vor, deshalb ist es für die Lesbarkeit des Codes günstig, wenn jede Zuweisung auf einer Zeile erfolgt.
Die Sign() Funktion arbeitet leider nicht (was ich vorausgesetzt hatte) mit dem Typ .a zusammen (immer diese Meckerei von PureBasic

Das einzeilige IF THEN ELSE scheint es auch nicht zu geben.
Typwandlungsbefehle (um das Ergebnis von b&#c in Fließkomma zu wandeln und dann der Sign() Funktion unterzuschieben) habe ich in der Hilfe keine gefunden.
Bliebe die umständliche Wandlung über Zeichenketten
Code: Alles auswählen
#c=2
Define.a a,b
b=0
a=Sign(ValF(StrU(b&#c)))
Debug a
b=2
a=Sign(ValF(StrU(b&#c)))
Debug a
Gibt es evtl. noch eine elegantere Lösung?