Print() и массив

 

Здравствуйте. У меня есть некоторые вопросы.

Написал вот такой код и компилировал :

double array[4];
Print(array[0]," ",array[1]," ",array[2]," ",array[3]);

Терминал показывает вывод :

2022.11.29 15:51:40.653 test GBPUSD,Daily: 2.121995790965272e-314 -1.037207564487499e+210 6.640408681415873e-316 0.0

Так вот вопросы :

1) Что это за цифры 

2.121995790965272e-314 -1.037207564487499e+210 6.640408681415873e-316

и откуда они взялись ?

2)Почему эти цифры разные ? Я же ведь в коде элементам массива не присвоил значении и они по моей логике должны быт все нули .Почему только последний элемент равен нулю ?

3) Если так то как узнать что в массив записался какое-либо значение ? если сравнить значение элемента массива с нулем то это сравнение всегда будет отличное от нуля .

Спасибо за ответы.

 
Ramin Cabrayilov:

Здравствуйте. У меня есть некоторые вопросы.

Написал вот такой код и компилировал :

Терминал показывает вывод :

Так вот вопросы :

1) Что это за цифры 

и откуда они взялись ?

2)Почему эти цифры разные ? Я же ведь в коде элементам массива не присвоил значении и они по моей логике должны быт все нули .Почему только последний элемент равен нулю ?

3) Если так то как узнать что в массив записался какое-либо значение ? если сравнить значение элемента массива с нулем то это сравнение всегда будет отличное от нуля .

Спасибо за ответы.

1. Print печатает строку. Double преобразуйте к строке DoubleToString

2. Что там хранится - найдете здесь  Инициализация переменных - Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5

3. Сравнение можно провести по разному. Это надо делать корректно. Все зависит от типа данных.
 

Если массив не инициализирован, то в нем будет "мусор" - содержимое ячеек памяти, в которых теперь размещается массив.

Для инициализации массива каким-либо значением нужно выполнить ArrayInitialize();

 

Значить если не инициализировать массив то узнать что какое либо значение записалось ли в массив будет невозможным ? 

 
Ramin Cabrayilov:

Я же ведь в коде элементам массива не присвоил значении и они по моей логике должны быт все нули .Почему только последний элемент равен нулю ?

Нули появятся, когда вы их туда запишите.



Ramin Cabrayilov
:


Почему только последний элемент равен нулю ?

Совпало.

 
Ramin Cabrayilov #:

Значить если не инициализировать массив то узнать что какое либо значение записалось ли в массив будет невозможным ? 

Почему не получится? Вы же прочитали те значения, которые сейчас есть в массиве. В некотором смысле это можно считать случайными величинами.

Причина обращения: