Баг или фича?

 

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

int bars_calculated;
Print(bars_calculated);

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

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

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

 
AshFTW:

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

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

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

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

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

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

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