long в массиве - прошу помощи
- Войдите на сайт для отправки комментариев
Сб, 04/07/2020 - 21:24
Добрый день! Друзья, помогите разобраться со странным поведением long в массивах.
Есть следующий код:
const byte TQuantity = 32 //количество ячеек массива unsigned long TData; //ячейка массива, 4 байта int TArray[TQuantity]; //инициализируем массив void setup() { Serial.begin(115200); } void loop() { fillArray (); readArray (); delay (5000); } void fillArray() { Serial.println("Fill array: "); for (int i = 0; i < TQuantity; i++) { TData = random(0, 65535) * random(0, 65535); //генерируем лонг TArray[i] = TData; Serial.print("Строка "); Serial.print(i); Serial.print(", значение "); Serial.println(TData); } } void readArray() { Serial.println("Decode array: "); for (int i = 0; i < TQuantity; i++) { TData = TArray[i]; Serial.print("Строка "); Serial.print(i); Serial.print(", значение "); Serial.println(TData); } }
Проблема в том, что записанные в массив числа и прочитанные из него не совпадают!
В чем ошибка?
Спасибо!
Разобрался. Нужно было инициализировать массив тоже как Long
Нет, в 23-й строке надо было печатать TArray[i], а не TData.
И зачем? Чтобы что?
Чтобы числа совпадали.
Проблема ведь заявлена именно в этом.
Тогда, следуя Вашей логике, именно ЗАПИСАННЫЕ и печатались бы. Все бы совпадало в «выводе», но не в «оригинале и сохраненном».
Типа троллинг, как я понял )))
Тогда, следуя Вашей логике, именно ЗАПИСАННЫЕ и печатались бы. Все бы совпадало в «выводе», но не в «оригинале и сохраненном».
А тот факт, что int32 может не поместиться в int16, настолько банален, что явно не заслуживает обсуждения.