
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Или на глобальном уровне объяви или
double MASS[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
:))))))))))))))))))))))
Не очень красиво, так лучше:
double MASS[20] = { 0 };
Результат тот же.
Не очень красиво, так лучше:
double MASS[20] = { 0 };
Результат тот же.
Нет, вернется ноль. И это потом можно проверить.
Не очень красиво придумывать possible of use uninitialization variable
Местная переменная не инициализируется автоматом 0?
Локальные нет, не инициализируются. Читайте документацию.
Местная переменная не инициализируется автоматом 0?
Лично я всегда, все переменные инициализирую. Если при создании переменной неизвестно, какое значение должно быть в ней - я инициализирую ее значением WRONG_VALUE или EMPTY_VALUE.
Это также позволяет избежать хитрых ошибок использования неинициализированных переменных.
Локальные нет, не инициализируются. Читайте документацию.
А сколько раз мне надо запустить скрипт чтобы алерт не 0 выдал?
А сколько раз мне надо запустить скрипт чтобы алерт не 0 выдал?
То, что в переменной ноль сейчас - не значит, что так будет всегда. Неинициализированная переменная может иметь любое значение. Видимо, по дефолту его обнуляют, вероятно, как раз, чтобы начинающие не нарывались на ошибки. Но, не факт, что так будет всегда - в любом билде разработчики могут для ускорения перестать это делать. Поэтому правильнее считать, что в неинициализированной переменной - может быть совершенно любое, неизвестное значение.
Добавлю, в С/С++ локальные переменные выделяются на стеке. Могу предположить, что в MQL4/5 тоже сделали так. А в стеке может быть все, что угодно, оставшееся от вызовов других функций. Результаты меняются даже от прогона к прогону скрипта
2015.11.01 05:11:19.317 TestStack (EURUSD.e,M1) i1= -1 i2= 441449680 i3= 0
2015.11.01 05:11:17.821 TestStack (EURUSD.e,M1) i1= -1 i2= 441711504 i3= 0
2015.11.01 05:11:07.148 TestStack (EURUSD.e,M1) i1= -1 i2= 442038912 i3= 0
Не очень красиво придумывать possible of use uninitialization variable
А чего тут некрасивого? Если переводить не дословно "Возможно использование не инициализированной переменной", где вы подумали, что компилятор вам это разрешил и сообщил об этом (это неточность в понимании смысла), а переводить именно по смыслу "Вероятно использование не инициализированной переменной", где, если по рабоче-крестьянски, компилятор говорит: "дружище, в данной строке, ты вероятно используешь не инициализированную переменную", что может привести к бяке.
Надеюсь понятно разъяснил смысл предупреждения?