К сведению: новая фича (?) компилятора

 
Посвящается всем программистам на Mql4...
.

.
Вот так. 
Не мог долго понять, почему у меня программа работает как-то странно.
Оказалось, что вместо bool передавалась строка.
Кстати, строка пошла за false.
.
Не стал искать в документации by design это или нет.
 
))) Ну.... даже и не знаю, как это расценивать и куда использовать.
Типа фича для борьбы с декомпиляторами. Пусть у них мозг вынесет. Бугагага!!!)))
 
Хм...
Строку можно так же передать в функцию,
  берущую аргументы типа int и double...
.
Однако, сюрприз...
 
jartmailru >>:

Кстати, строка пошла за false.
Попробуй в строке передать "true".
:)
 
jartmailru писал(а) >>
Строку можно так же передать в функцию,
берущую аргументы типа int и double...

Может это связано со способом передачи строк? Ведь, например, адрес начала строки - целое число.
Терминала под рукой нет, гляньте что получится:
void f(int val) {
   Print(val);
}

int start() {
   f("Hello");
   return (0);
}
 
MetaDriver писал(а) >>
Попробуй в строке передать "true".
:)



Похоже, что в любом случае получается ноль/false.
 
lea >>:
Может это связано со способом передачи строк? Ведь, например, адрес начала строки - целое число.
Терминала под рукой нет, гляньте что получится:

Так- в Mql4- все получится.
.
В Ms VС++ 2005 с интом будет ошибка.
Зато в плюсах строку можно легально дать как bool.
.
Но Mql4 по отношению к клиенту- это всё же язык без адресной арифметики.
Так что апелляция к передаче адресов неуместна ;-).

 
Скорее всего суть в том, что компилятор увидел в передаваемом параметре значение не равное нулю (больше нуля), вне зависимости от того, что был передан строковый параметр. По-моему в PHP осуществлён тот же механизм, мол если в переменной лежит любое значение, отличное от нуля (а для чисел большее чем ноль), то она true.
 
jartmailru >>:

Зато в плюсах строку можно легально дать как bool.

Предупреждение будет. А вообще вполне нормальное явление -- не нравится -- приводите явно.
Причина обращения: