Скачать MetaTrader 5

Воистину поразительный результат!!!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MuruFigi
191
MuruFigi 2009.02.22 19:17 

Код:

void DebugInfo()
{
   int a=23;
   int s=20;
   int f=1;
   // Исходное условие
   bool r1 = a>=s && a<=f && s<=f || (a>=s || a<=f) && s>f;
   // Дальше пошли извращения
   bool r2 = a>=s && a<=f && s<=f;
   bool r3 = (a>=s || a<=f) && s>f;
   bool r4 = r2 || r3;
   // Вывод
   Print (r1+" "+r2+" "+r3+" "+r4);
   // Результат: 0 0 1 1. А должно быть: 1 0 1 1.
}

А теперь вопрос на засыпку: кого глючит меня или MQL4???

Спасибо:)

Ярослав
777
Ярослав 2009.02.22 19:23  

Воистину восхитительный!


Кажется, на этом можно побыстрому срубить!

Aleksandr Pak
2156
Aleksandr Pak 2009.02.22 19:33  

чем не дoвольны?
да=1, нет=0,

a<=f не выполняетc

==ответ правильный

Nazariy Stapyak
1754
Nazariy Stapyak 2009.02.22 19:38  
Korey >>:

чем не дoвольны?
да=1, нет=0,

a<=f не выполняетc

==ответ правильный

Но зато выполняется (a>=s || a<=f) && s>f

Victor Nikolaev
Модератор
14629
Victor Nikolaev 2009.02.22 19:40  
WWer писал(а) >>

Но зато выполняется (a>=s || a<=f) && s>f

Тогда скобки надо было поставить

Nazariy Stapyak
1754
Nazariy Stapyak 2009.02.22 19:41  
Vinin >>:

Тогда скобки надо было поставить

Зачем? У  ||  большый приоритет чем у  &&

Alexander
1514
Alexander 2009.02.22 19:42  
(a>=s || a<=f)                 -   1  ||  0 = 1
(a>=s || a<=f) && s > f - 1 && 1 = 1

А вообще нужно явно скобками отделять. Я уже как-то на это попался

WWer >>:

Зачем? У || большый приоритет чем у &&

так укажите это в коде, чтобы скритпу было понятно =)


MuruFigi
191
MuruFigi 2009.02.22 19:42  
Korey писал(а) >>

чем не дoвольны?
да=1, нет=0,

a<=f не выполняетc

==ответ правильный

Ответ правильный или если меня очень сильно проглючило или в MQL4 логические операции проводятся по очень странным правилам. Не похожим ни на С/С++ ни на что вообще. Я даже перевел на JavaScript:

var a=23;
var s=20;
var f=1;
// Исходное условие
var r1 = a>=s && a<=f && s<=f || (a>=s || a<=f) && s>f;
// Дальше пошли извращения
var r2 = a>=s && a<=f && s<=f;
var r3 = (a>=s || a<=f) && s>f;
var r4 = r2 || r3;
// Вывод
WScript.Echo(String(r1)+" "+String(r2)+" "+String(r3)+" "+String(r4));
Результат: true false true true
Eugeni Neumoin
1848
Eugeni Neumoin 2009.02.22 19:43  
WWer писал(а) >>

Зачем? У || большый приоритет чем у &&

наоборот, у && больший приоритет, чем у ||

Nazariy Stapyak
1754
Nazariy Stapyak 2009.02.22 19:45  
nen >>:

наоборот, у && больший приоритет, чем у ||

В MQL4 ? Возможно, но должно быть так.

Rid
3170
Rid 2009.02.22 19:47  

Вовсе нет ! Приоритет  здесь у "или"(||), - однозначно !

Если скобок нет, то сначала будет выполнено ||, а потом уж && 

Поэтому скобки нужно обяз. ставить в соотв. местах

123456789
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий