Показать сообщение отдельно
Старый 10.12.2009, 03:53   #15
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Интересно и вроде недокументровано

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
Так что, борец за права енотов, спуститесь с метафор на землю - нам ещё нужны хорошие дизайнеры.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием