Мжет подскажет кто? - страница 2

 
для логического ИЛИ или первое сработавшее или окончание перечня условий
нет, в мкл 4 _всегда_обрабатываются_ВСЕ_условия_
О чём мы с alexjou и пытаемся сказать ;)

Хотя, на 100% я не уверен, просто помню что когда-то об этом читал на форуме...
 
для логического ИЛИ или первое сработавшее или окончание перечня условий
нет, в мкл 4 _всегда_обрабатываются_ВСЕ_условия_
О чём мы с alexjou и пытаемся сказать ;)

Хотя, на 100% я не уверен, просто помню что когда-то об этом читал на форуме...


Более чем уверен : Вы это читали о логическом И. Если не сложно, попробуйте объяснить смысл обрабатывать последующие условия в ИЛИ, если первое выполнено ;). И если не лень посмотрите по форуму - практически на все вопросы, связанные с МКЛ4 разработчики рекомендуют обращаться к стандарту С/С++, на котором они ( МТ4 и МКЛ4) и написаны ;).

Удачи и попутных трендов.
 

Более чем уверен : Вы это читали о логическом И. Если не сложно, попробуйте объяснить смысл обрабатывать последующие условия в ИЛИ, если первое выполнено ;). И если не лень посмотрите по форуму - практически на все вопросы, связанные с МКЛ4 разработчики рекомендуют обращаться к стандарту С/С++, на котором они ( МТ4 и МКЛ4) и написаны ;).

Вся проблема как раз состоит в том, что это не всегда так.
Здравый смысл говорит о том, что нет необходимости проверять все условия, если первое не сработало.
Это касается и И и ИЛИ.

Но в MQL4 сделано так, что все условия if() проверяются до конца.
(о причинах лучше спросить у разработчиков, мне кажется, что это простая недоработка)
Вообще-то, в таком подходе нет противоречий, но только если происходит анализ переменных.

Проблема может возникнуть в том случае, если в качестве условия проверяется значение функции.
Программист может расчитывать, что по неисполнению первого условия обработка if() прекратится.
А обработка не прекращается и вразрез со здравым смыслом продолжается анализ следующего условия, при этом происходит обращение к функции. А уж в функции может быть написано разное., в том числе и изменение глобальных переменных, например. Со всеми вытекающими последствиями.

Одним словом, лучше использовать код попроще, да поочевидней, хоть, может быть, и не такой красивый.
 

Вся проблема как раз состоит в том, что это не всегда так.
Здравый смысл говорит о том, что нет необходимости проверять все условия, если первое не сработало.
Это касается и И и ИЛИ.

Но в MQL4 сделано так, что все условия if() проверяются до конца.
(о причинах лучше спросить у разработчиков, мне кажется, что это простая недоработка)

.............................

Одним словом, лучше использовать код попроще, да поочевидней, хоть, может быть, и не такой красивый.


В принципе, Вы правы - даже, не смотря на отсылку к стандарту С\С++, реализовано может быть по-любому. Хотя с функциями можно проверить - через принты, например.
Именно поэтому я предпочитаю С\С++ - там всегда знаешь как работают условия и выполняется или нет последний раз цикл.
А что до упрощения логики и повышения однозначности в трактовке - так тем более согласен: обычно использую операторные скобки и максимально протые условия под оператором if(...)

Удачи и попутных трендов.
Причина обращения: