forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Условие (http://forum.boolean.name/showthread.php?t=137)

impersonalis 25.09.2005 02:56

это конечо занимательно, но условие
Код:

if p<>0
я могу заменить на (с сохранением работоспособности)
Код:

if p
а вот условие
Код:

if p<>0 and q<>0
на
Код:

if p and q
заменить не могу. :bad:

SubZer0 25.09.2005 03:01

Код:

p=1
q=1

if p And q Then Print "p"

waitkey()

у меня работает, не знаю что там у тя :)

impersonalis 25.09.2005 03:02

а так?
Код:

p=10
q=1

If p And q Then Print "p"

WaitKey()


SubZer0 25.09.2005 03:07

а так не работает, вероятно берется по последнему биту или хз мож только ноль или один.... надо протестить :)

alcosholik 25.09.2005 03:39

Странно.
Код:

p=10
q=2
if p and q then print "works"
waitkey()

работает.

Код:

p=20
q=2
if p and q then print "works"
waitkey()

не работает.

Код:

p=30
q=2
if p and q then print "works"
waitkey()

работает.

А если во всех примерах q=1, то не работает.
Вообще хз.

jimon 25.09.2005 12:52

потомучто так делать ненадо... :o

pax 12.10.2005 00:45

Как известно в матлогике AND=умножить, следовательно можно делать так:
Код:

p=20
q=2
If p*q Then Print "works"
WaitKey()

И все работает :)

SubZer0 12.10.2005 01:10

Цитата:

Originally posted by PAX@Oct 11 2005, 10:45 PM
Как известно в матлогике AND=умножить, следовательно можно делать так:
хмм странно, почему работает - не пойму... хотя почему оно не работало сначала тоже не пойму...

это ты ведь не битовое умножение делаешь, а арифметическое, это большая разница...

это просто глюк блица... :)

impersonalis 12.10.2005 20:48

Цитата:

Originally posted by PAX@Oct 11 2005, 10:45 PM
Как известно в матлогике AND=умножить, следовательно можно делать так:
Код:

p=20
q=2
If p*q Then Print "works"
WaitKey()

И все работает :)

Это делает код менее удобочитаемым. Подобно замене
if a=b
на
if not (a-B)

pax 12.10.2005 21:46

Вообще в битце считается 0 = False, любое число отличное от нуля = True, по этому и работает :)

Код:

Это делает код менее удобочитаемым.
Главное чтобы работало, помоему :ok:

impersonalis 12.10.2005 23:10

Цитата:

Originally posted by PAX@Oct 12 2005, 07:46 PM
Вообще в битце считается 0 = False, любое число отличное от нуля = True, по этому и работает :)


Ясно-понятно, иначе бы я и не затеял пост. А преобразование результата выражения, записанного в скобках условного оператора к bool происходит во всех нормальных языках.

Matt Merkulov 27.10.2005 06:09

Цитата:

хмм странно, почему работает - не пойму... хотя почему оно не работало сначала тоже не пойму...

это ты ведь не битовое умножение делаешь, а арифметическое, это большая разница...

это просто глюк блица... :)

Нет все работает правильно. Допустим A=1(%01), B=2(%10), A And B будет равно 0, хотя A<>0 и B<>0. При умножении результат равет 0, если хотя бы один из множителей равен нулю, иначе <>0 - True

А насчет удобочитаемости - это дело привычки.


Часовой пояс GMT +4, время: 19:10.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot