Удар током от клавы - это всегда полезно, для осознания бренности бытия ...
А по поводу того, правильно или не правильно ругается компилятор - смотрим документацию по bool-овскому типу данных (https://www.mql5.com/ru/docs/basis/types/integer/boolconst). Так однозначно указано, цитирую: " Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или вещественные типы или выражения этих типов, компилятор не выдаст ошибки. В таком случае значение ноль будет интерпретировано как false, а все остальные значения как true. "
Немного модифицируем пример из этого описания:
- видно, что в первом случае компилятор пропускает код без проблем, во втором случае он ему не нравится (хотя раньше всё работало исправно).
Желающие могут проверить это самостоятельно - пример прикрепляю.
intOnInit()
{
//---return(INIT_SUCCEEDED);
}
//+-------------------- END -----------------------------------------+//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &Time[],
constdouble &Open[],
constdouble &High[],
constdouble &Low[],
constdouble &Close[],
constlong &Tick_Volume[],
constlong &Volume[],
constint &Spread[])
{
int i;
staticdouble AA[5];
staticdouble BB[5];
i=1;
if( AA[i] )
Print("AA[i] = ",AA[i]," и имеет значение true");
elsePrint("AA[i] = ",AA[i]," и имеет значение false");
if( AA[i] || BB[i] )
Print("AA[i] = ",AA[i]," и имеет значение true");
elsePrint("AA[i] = ",AA[i]," и имеет значение false");
return(rates_total);
}
//---------------------------------------------------------------------------------------
Мне, как бы не сложно исправить свой код в 2000 местах, в сущности, это просто работа, которая хорошо оплачивается рынком.
Ну так он же и не выдает ошибку. Выдает замечание, обращает Ваше внимание на то, что может быть Вы что то забыли. Не учли, пропустили и т.д. А то, что где - то он это делает, а где - то нет... Ну может пропустили. Потом доработают.
Man: Удар током от клавы - это всегда полезно, для осознания бренности бытия ...
А по поводу того, правильно или не правильно ругается компилятор - смотрим документацию по bool-овскому типу данных (https://www.mql5.com/ru/docs/basis/types/integer/boolconst). Так однозначно указано, цитирую: " Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или вещественные типы или выражения этих типов, компилятор не выдаст ошибки. В таком случае значение ноль будет интерпретировано как false, а все остальные значения как true. "
Немного модифицируем пример из этого описания:
- видно, что в первом случае компилятор пропускает код без проблем, во втором случае он ему не нравится (хотя раньше всё работало исправно).
Желающие могут проверить это самостоятельно - пример прикрепляю.
Мне, как бы не сложно исправить свой код в 2000 местах, в сущности, это просто работа, которая хорошо оплачивается рынком.
Но как-то "За державу обидно" :)
Так ошибки и нет , это предупреждение. С предупреждениями компилируется без проблем. А предупреждения эти от того что возможно корректность работы будет нарушена при неявном преобразовании. PS конечно сложно не понять что только 0 это false , но мало ли какое чудо вдруг компилятору в голову стрельнет.......
Так ошибки и нет , это предупреждение. С предупреждениями компилируется без проблем. А предупреждения эти от того что возможно корректность работы будет нарушена при неявном преобразовании. PS конечно сложно не понять что только 0 это false , но мало ли какое чудо вдруг компилятору в голову стрельнет.......
смена пола - прямо на глазах)
Спалился от раздражения)
вернитесь на предыдущий билд
Как вернуться? Где предыдущий билд?
Ошибка у меня действительно ={0}. Но тоже пришлось править около 123 мест...
Прочитайте Define, функции, макро. Будущее легче.
смена пола - прямо на глазах)
...
Компилятор выдаёт предупреждение на то что не указано явно
А по поводу того, правильно или не правильно ругается компилятор - смотрим документацию по bool-овскому типу данных (https://www.mql5.com/ru/docs/basis/types/integer/boolconst).
Так однозначно указано, цитирую: " Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или вещественные типы или выражения этих типов, компилятор не выдаст ошибки. В таком случае значение ноль будет интерпретировано как false, а все остальные значения как true. "
Немного модифицируем пример из этого описания:
- видно, что в первом случае компилятор пропускает код без проблем, во втором случае он ему не нравится (хотя раньше всё работало исправно).
Желающие могут проверить это самостоятельно - пример прикрепляю.
Мне, как бы не сложно исправить свой код в 2000 местах, в сущности, это просто работа, которая хорошо оплачивается рынком.
Но как-то "За державу обидно" :)
Из последнего - часто ошибочные инициализации структур как ={0}.
Инициализация {} на которую предлагают заменить еще хуже, разве нет?
Удар током от клавы - это всегда полезно, для осознания бренности бытия ...
А по поводу того, правильно или не правильно ругается компилятор - смотрим документацию по bool-овскому типу данных (https://www.mql5.com/ru/docs/basis/types/integer/boolconst).
Так однозначно указано, цитирую: " Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или вещественные типы или выражения этих типов, компилятор не выдаст ошибки. В таком случае значение ноль будет интерпретировано как false, а все остальные значения как true. "
Немного модифицируем пример из этого описания:
- видно, что в первом случае компилятор пропускает код без проблем, во втором случае он ему не нравится (хотя раньше всё работало исправно).
Желающие могут проверить это самостоятельно - пример прикрепляю.
Мне, как бы не сложно исправить свой код в 2000 местах, в сущности, это просто работа, которая хорошо оплачивается рынком.
Но как-то "За державу обидно" :)
Так ошибки и нет , это предупреждение. С предупреждениями компилируется без проблем. А предупреждения эти от того что возможно корректность работы будет нарушена при неявном преобразовании.
PS конечно сложно не понять что только 0 это false , но мало ли какое чудо вдруг компилятору в голову стрельнет.......
Так ошибки и нет , это предупреждение. С предупреждениями компилируется без проблем. А предупреждения эти от того что возможно корректность работы будет нарушена при неявном преобразовании.
PS конечно сложно не понять что только 0 это false , но мало ли какое чудо вдруг компилятору в голову стрельнет.......
Вы настолько в этом уверены ?? :-)
вставить сравнение с нулем было в разы быстрее (и правильнее изначально) чем писать этот ваш пост