Разница между Бэ и Цэ кладётся в А. Далее значение А сравнивается с нулём.
Игорь спасибо, только не совсем понятно что дает это "сравнение с нулем".
например в if (a>0) function(); есть функция, а тут получается просто сравнили и забыли ? т.е. больше она нуля или меньше - из этого ничего не следует чтоли ? или я что-то не так понимаю ?
Разница между Бэ и Цэ кладётся в А. Далее значение А сравнивается с нулём.
Это точно именно так, или только предположение? Я использую подобные конструкции исходя из того, что работают они не так как Вы сказали. Я пишу тупо как на Делфи, и рассчитываю что MQL работает подобным образом. Один раз уже прокололся с преобразованием типов. :) Теперь еще один прокол? :) Хотя багов я не замечал когда писал такие выражения.
PS
На Делфи сия запись вычисляется следующим образом.
Сначала вычисляется значения правого выражения ( (b-c)>0 ), которое имеет булевский тип.
Потом значение этого выражения присваевается левой части (переменной а в данном примере). Переменная a должна быть булевской.
В приведенном примере переменная а будет true, если b-c>0, иначе -- false.
На Делфи сия запись вычисляется следующим образом.
Сначала вычисляется значения правого выражения ( (b-c)>0 ), которое имеет булевский тип.
Потом значение этого выражения присваевается левой части (переменной а в данном примере). Переменная a должна быть булевской.
В приведенном примере переменная а будет true, если b-c>0, иначе -- false.
это больше похоже на правду, спасибо :)
Это оператор присваивания. Слева от знака равенства находится булевая или целая переменная, а справа выражение.
В нынешней реализации mql не предполагается возможность оператора присваивания внутри операции сравнения.
Сия запись на mql вычисляется так, как написал Player_2 .
В зависимости от типа переменной а происходит или не происходит целевое преобразование типа значения в правой части к типу переменной а.
Подскажите пожалуйста какая логика у этого выражения :
a = (b - c) > 0;Что это значит ? что дает ? я с таким первый раз в своей практике встречаюсь
Если b>c, то a=true, во всех остальных случаях a=false;
Подскажите пожалуйста какая логика у этого выражения :
a = (b - c) > 0;
Что это значит ? что дает ? я с таким первый раз в своей практике
встречаюсь
Если b>c, то a=true, во всех остальных случаях a=false;
Подскажите пожалуйста какая логика у этого выражения :
a = (b - c) > 0;Что это значит ? что дает ? я с таким первый раз в своей практике встречаюсь
Если b>c, то a=true, во всех остальных случаях a=false;
Это правильно только для булевой а.
В общем случае преременная а может иметь любой тип, к которому будет приведено значение выражения в правой части перед присваиванием (произойдёт целевое преобразование типа).
При компиляции этого кода ошибок не возникает:
int init() { int b = 3; int c = 2; int a1 = (b - c) > 0; bool a2 = (b - c) > 0; double a3 = (b - c) > 0; string a4 = (b - c) > 0; color a5 = (b - c) > 0; datetime a6 = (b - c) > 0; Alert("a1 = ", a1); Alert("a2 = ", a2); Alert("a3 = ", a3); Alert("a4 = ", a4); Alert("a5 = ", a5); Alert("a6 = ", a6); return; }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите пожалуйста какая логика у этого выражения :
Что это значит ? что дает ? я с таким первый раз в своей практике встречаюсь