Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ну я вроде на второй странице согласился, что мол если так, то нужно говорить не о баге в компиляторе, а о баге в мозгах разработчиков. Без обид, я эту тему скорее для смеха сделал.
Мне вот что непонятно теперь.
На чем разрабатывается компилятор MQL? Ведь если он разрабатывается на нормальном языке, то программистов в первую очередь должно было расколбасить от того, что у них операции умножения и сложения имеют равный приоритет. Как они могли такое пропустить? Что неужели все подряд ставят скобки где нужно и где не нужно? Кстати, большое количество скобок тоже ухудшает наглядность кода. А когда ваши программисты пинут арифметичечкие операции типа 2+3*4 они тоже пишут 2+(3*4), а то не дай Бог бага проскочит в компиляторе С++ да и вложенность 100-ста скобок в одном выражении вручную посчитать это ж кайф:)
Это баг в мозгах разработчиков C, Java, Fortran, MathCad etc. etc. etc.
Как ты до сих пор не понял!
ЗЫ
Хотя, признаюсь, мне тоже понадобилось время чтобы это осознать.
Хотя, признаюсь, мне тоже понадобилось время чтобы это осознать.
Только сейчас стало понятно, почему некоторые логические комбинации не хотели выполняться как надо. Приходилось добавлять искусственные скобки.
Ничем не мог ранее это объяснить. Но и тему не поднимал. Методом тыка находил нужное решение. Но это сколько же надо тыкать, чтобы все перетыкать?
Только сейчас стало понятно, почему некоторые логические комбинации не хотели выполняться как надо. Приходилось добавлять искусственные скобки.
Ничем не мог ранее это объяснить. Но и тему не поднимал. Методом тыка находил нужное решение. Но это сколько же надо тыкать, чтобы все перетыкать?
RTFM
*rofl*
Ну не все подряд, конечно, но я - ставлю всегда. И чисто по привычке ставил их еще задолго до того, как узнал об этом "баге в голове разработчиков". А зачем мне лишний раз лазить в хелп для выяснения приоритетов, если я могу обойтись и без этого, поставив скобки? Поэтому для меня этот "баг" катастрофой не стал, хотя и позабавил.
Да и раньше, когда что-то булевское на Си писал, тоже их ставил, хотя в приоритетах не сомневался. А если честно, то считаю, что сложное булевское выражение без скобок - это нечто не очень читабельное.
P.S. Только, пожалуйста, прошу не приводить идиотские примеры типа 2+3*4. Если бы такой финт с приоритетами случился для арифметических операций, я абсолютно без угрызений совести называл бы его самым настоящим багом.
Кстати:
x 1 or (x 2 and x 3 ) = (x 1 or x 2 ) and (x 1 or x 3 )
x 1 and (x 2 or x 3 ) = (x 1 and x 2 ) or (x 1 and x 3 )
Из чего следует, что с точки зрения булевой алгебры операции or и and имеют одинаковый приоритет.
Андрей, из чего ты, собственно, вывел, что приоритеты эти операций в булевой алгебре равны? Контрпример:
при a=1, b=0, c=0
(a or b) and c = (1 or 0) and 0 = 0
a or (b and c) = 1 or (0 and 0) = 1
На чем разрабатывается компилятор MQL? Ведь если он разрабатывается на нормальном языке, то программистов в первую очередь должно было расколбасить от того, что у них операции умножения и сложения имеют равный приоритет. Как они могли такое пропустить?
Ну вот еще один образчик передергивания. И при этом топик стартер сообщает, что завел тему для прикола, и документацию к этому моменту все же прочитал.
Ну вот еще один образчик передергивания. И при этом топик стартер сообщает, что завел тему для прикола, и документацию к этому моменту все же прочитал.
Доприкаловался :-) Может и правда, что великие открытия делаются непринужденно, имея совсем другие цели.
Доприкаловался :-). Может и правда, что великие открытия делаются непринужденно, имея совсем другие цели.
Это "открытие" вряд ли имет смысл относить к великим. Оно стоит только того, чтобы просто констатировать сам факт и забыть. Да и вообще тема приоритета булевых операций надуманна: разработчикам было бы дешевле просто запретить строить булевы выражения с разными операциями без скобок и считать такие конструкции ошибочными.
Андрей, из чего ты, собственно, вывел, что приоритеты эти операций в булевой алгебре равны? Контрпример:
при a=1, b=0, c=0
(a or b) and c = (1 or 0) and 0 = 0
a or (b and c) = 1 or (0 and 0) = 1
а = красивая
b = умная
c = богатая
x= a && b && c ;
y = a || b || c ;
Интересно, что бы ты Андрей предпочел: х = 1 или y = 1 ?
Андрей, из чего ты, собственно, вывел, что приоритеты эти операций в булевой алгебре равны?
Из симметричности операций. А симметричность операций напрямую следует из выделенных формул.
У одной из симметричных операций не может быть приоритета над другой.
Интересно, что бы Андрей предпочел: х = 1 или y = 1 ?
Я бы предпочел, Эрик, спорить без перехода на личности и ерничания.
___________________________________
Вобщем я к чему
Результат выражения A && B || C с точки зрения булевой алгебры неопределен.