Seite 1 von 1

C++ nach PureBasic übersetzen! Code: y += (y2>y1?1:-1)

Verfasst: 28.01.2020 15:03
von Mijikai
Wie kann ich folgenden C++ Code in PureBasic umsetzten?

Code:

Code: Alles auswählen

y += (y2>y1?1:-1)

Re: C++ nach PureBasic übersetzen! Code: y += (y2>y1?1:-1)

Verfasst: 28.01.2020 15:24
von #NULL

Code: Alles auswählen

If y2 > y1
  y = y + 1
Else
  y = y - 1
EndIf

Re: C++ nach PureBasic übersetzen! Code: y += (y2>y1?1:-1)

Verfasst: 28.01.2020 15:31
von Pelagio
Hallo Mijikai,

Es gibt auch den Befehl BOOL bei PB, eventuell kann mann auch damit zu einem Ergebnis kommen,
wobei die Variant von #NULL die schnellste und auch einfachste ist.
Ein Beispiel:

Code: Alles auswählen

Define.i Y = 10
Y1.i = 12
Y2.i = 9

Y + 2 * Bool(Y2<Y1) - 1
Debug Y 

Y = 10
Y + 2 * Bool(Y2>Y1) - 1
Debug Y

Re: C++ nach PureBasic übersetzen! Code: y += (y2>y1?1:-1)

Verfasst: 28.01.2020 15:47
von mk-soft
Viel ASM Code

Code: Alles auswählen

Macro IIf(Assert, r1, r2)
  ((Bool((Assert))*r1) + (Bool(Not(Assert))*r2))
EndMacro

y1 = 1
y2 = 2
y = 10
y + IIF(y2>y1, 1, -1)
Debug y
y1 = 2
y2 = 1
y = 10
y + IIF(y2>y1, 1, -1)
Debug y

Re: C++ nach PureBasic übersetzen! Code: y += (y2>y1?1:-1)

Verfasst: 28.01.2020 15:57
von #NULL
r1 und r2 müssen im Macro Body geklammert werden. Außerdem muss man dabei beachten, dass der Ausdruck Assert mehrmals ausgewertet wird.

Re: C++ nach PureBasic übersetzen! Code: y += (y2>y1?1:-1)

Verfasst: 28.01.2020 15:59
von Mijikai
Super, danke für die vielen Lösungsvorschläge :)

Re: C++ nach PureBasic übersetzen! Code: y += (y2>y1?1:-1)

Verfasst: 28.01.2020 18:39
von Nino