Скачать MetaTrader 5

Баг или фича?

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

Если вставить в любой индикатор в функцию OnCalculate() следующие строчки:

int bars_calculated;
Print(bars_calculated);

и посмотреть результат в логе, то можно увидеть цифру, отличную от нуля. Я ведь эту переменную только проинициализировал, она вообще должна быть равна нулю. Даже варн выдаёт:

possible use of uninitialized variable 'bars_calculated' test.mq5 2 8

В документации про это ничего не сказано. В поиске кидает на параметр обработчика. Прокомментируйте кто-нибудь эту фичу...

Vladimir Karputov
Модератор
56342
Vladimir Karputov  
AshFTW:

Если вставить в любой индикатор в функцию OnCalculate() следующие строчки:

и посмотреть результат в логе, то можно увидеть цифру, отличную от нуля. Я ведь эту переменную только проинициализировал, она вообще должна быть равна нулю. В документации про это ничего не сказано. В поиске кидает на параметр обработчика. Прокомментируйте кто-нибудь эту фичу...

Пока переменной, после её создания, не присвоить явно значение, эта переменная не определена.

Вам нужно поступить так:

int bars_calculated=-1;
Print(bars_calculated);
Alexander Bereznyak
22684
Alexander Bereznyak  
Это локальная переменная, локальные переменные при создании не инициализируются по умолчанию.
Dmitiry Ananiev
7181
Dmitiry Ananiev  
barabashkakvn:

Пока переменной, после её создания, не присвоить явно значение, эта переменная не определена.

Если бы вы подобное писали бы на Си, то переменной бы присвоилось мусорное значение, т.е. любое и компилятор выдал бы ошибку. В MQL идет неявная инициализация и переменной присваивается 0. Что не выдает ошибку, но выдает предупреждение.   
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий