12.04.2016 / 09:02 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| MoteX, на деле, если у тебя будет такая конструкция: if (false && a == b && a > c)
то остальные сравнения выполнять не надо. __________________
let live |
12.04.2016 / 09:02 | |
MoteX Пользователь Сейчас: Offline
Имя: Матвей Откуда: Вяземский Регистрация: 14.10.2011
| Витаминыч, что там?)
|
12.04.2016 / 09:06 | |
MoteX Пользователь Сейчас: Offline
Имя: Матвей Откуда: Вяземский Регистрация: 14.10.2011
| aNNiMON, вот ты кстати мне напомнил миллионы лет мучавший меня вопрос: Как понимать такое выражение? if ( a=0 and b=0 or c=0 ) thenВ каких случаях оно сработает? У меня просто мозг взрывается при попытке его просчитать Я всегда все в скобки заключал. Изменено MoteX (12.04 / 09:07) (всего 1 раз) |
12.04.2016 / 09:17 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| MoteX, есть такое понятие "приоритет операций". У = приоритет выше, чем у and, а у or - низкий приоритет. Это значит, что a = 0 будет парситься раньше и проблем не возникнет. Что равносильно: if ( ((a=0) and (b=0)) or (c=0) )
Порядок разбора будет следующий: // При a = 0, b = 1, c = 0
a = 0 -> true
b = 0 -> false
true and false -> false
c = 0 -> true
false or true -> true
// или так
( a=0 and b=0 or c=0 )
( true and b=0 or c=0 )
( true and false or c=0 )
( false or c=0 )
( false or true )
( true )
__________________
let live Изменено aNNiMON (12.04 / 09:23) (всего 3 раза) |
12.04.2016 / 09:26 | |
aRiGaTo Пользователь Сейчас: Offline
Имя: Snork Откуда: Yerevan Регистрация: 03.02.2010
| MoteX, есть такая штука, как приоритет операций. A and B or C ничем принципиально не отличается от A * B + C. Представь что ты это выражение преобразуешь в дерево, тогда чем выше приоритет операции тем ближе к корню будет её узел. Вот в C/C++ у сложения и вычитания приоритет - 6, а умножение/деление - 5. Примерно так: A and B or Cor
|----and
| |---A
| |---B
|-C
Открыть спойлер Закрыть спойлер Оопоздал слегка __________________
don't tread on me Изменено aRiGaTo (12.04 / 09:26) (всего 1 раз) |
12.04.2016 / 09:28 | |
MoteX Пользователь Сейчас: Offline
Имя: Матвей Откуда: Вяземский Регистрация: 14.10.2011
| aNNiMON, отлично. Ты внес ясность в разум. В дополнение к своей идее я додумал следующее При условии a=10, b=20, c=10 if (a=10 or b=10) and c=10
мы получаем И затем, что бы не парить код алгоритмами, я просто ставлю вместо and +, а вместо or *. На выходе получаю выражение (0*1)+0=0 условие выполнено. Надо прокрутить всевозможные варианты. Похоже для себя я изобрел неплохой велосипед. Изменено MoteX (12.04 / 09:30) (всего 1 раз) |
12.04.2016 / 09:29 | |
MoteX Пользователь Сейчас: Offline
Имя: Матвей Откуда: Вяземский Регистрация: 14.10.2011
| aRiGaTo, вот блин прям как по дорожке все идет)
|
12.04.2016 / 09:51 | |
MoteX Пользователь Сейчас: Offline
Имя: Матвей Откуда: Вяземский Регистрация: 14.10.2011
| aNNiMON, ну у меня немного по-своему получилось. Но мысль похожая. Я именно нулевые значения принимая как правду. Прочитал только начало, остальное дома) Уехал)
|
12.04.2016 / 16:06 | |
Витаминыч Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| Цитата MoteX: Витаминыч, что там?)исходник бейсика на бейсике __________________
わからない!! |