Local X$,Y%
X=600
Y=70
If X<Y
Print "X<Y"
EndIf
WaitKey()
End
|
результат тоже.
Сударь, как по вашему работает условный оператор?
Он всего-лишь делает или нет джамп принимая на вход (ТОЛЬКО!) истину или ложь. В свою очередь операторы сравнения возвращают 1 при истинности неравенства и 0 в обратном случае.
Так что HLSL и С++ в этом плане - всего-лишь инерция парадигмы. Даже языки различных ассемблеров как правило лишь сохраняют флаг результата сравнения, а подобие if его обрабатывает.
Собсвтенно, никаких рациональных мыслей "как реализовать if иначе" у меня нет (один говнокод).
Вот ещё в таком случае пример (выходит тоже не очень доументированной возможности):
Function GetMax%(a%,b%)
Return (a>b)*a+(b>a)*b+(a=b)*a
End Function
Local i%
For i=1 To 10
Local q=Rand(1,10)
Local w=Rand(1,10)
DebugLog "["+q+";"+w+"] -> "+GetMax(q,w)
Next
WaitKey()
End
|
результат для дефолтной инициализирующей последовательности ГПСЧ:
[4;8] -> 8
[4;5] -> 5
[6;8] -> 8
[6;2] -> 6
[1;7] -> 7
[2;5] -> 5
[3;3] -> 3
[7;7] -> 7
[1;10] -> 10
[5;6] -> 6
|
Так что, борец за права енотов, спуститесь с метафор на землю - нам ещё нужны
хорошие дизайнеры.