Скачать MetaTrader 5

Баг или фича?

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

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

int bars_calculated;
Print(bars_calculated);

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

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

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

Vladimir Karputov
Модератор
45792
Vladimir Karputov 2015.03.06 12:45  
AshFTW:

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

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

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

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

int bars_calculated=-1;
Print(bars_calculated);
Alexander Bereznyak
21475
Alexander Bereznyak 2015.03.06 16:03  
Это локальная переменная, локальные переменные при создании не инициализируются по умолчанию.
Dmitiry Ananiev
6586
Dmitiry Ananiev 2015.03.22 14:52  
barabashkakvn:

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

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