Serial + Массив
- Войдите на сайт для отправки комментариев
Втр, 08/06/2021 - 01:24
Имеется вот такой код
int MyMassiv[5]; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { MyMassiv[3] = Serial.parseInt(); int x = MyMassiv[3]+2; Serial.println(x); } }
По моим представлениям он должен делать так:
Если в сериал порте есть целое число, то он берет это целое число и отправляет в массив.
Потом приравнивает переменную X к сумме этого элемента массива и числа 2.
А далее вывод переменной X в сериал порт.
НО ЭТО ТАК НЕ РАБОТАЕТ Точнее работает странно.
Например мы водим в сериал порт число 3 Число 3 не появляется а появляется 5 сразу.
А потом через секунду появляется число 2!!!
То число которое мы суммируем с элементом массива!
Подскажите кто знает как с этим работать.
Ну для начала нужно взять и внимательно прочитать описание всех использованных функций.
Например мы водим в сериал порт число 3 Число 3 не появляется а появляется 5 сразу.
А что, 3+2 уже не 5? Я что-то проспал?
Что касается дальнейшего, то Вы не чистите порт от символов перевода строки в возврата каретки.
Что касается дальнейшего, то Вы не чистите порт от символов перевода строки в возврата каретки.
Евгений, сорри за оффтоп, не подскажете ссылку на Ваше обьяснение, насчет "неопределенного поведения" компилятора при union и приведении типов?
А мне ссылку на автомат Милли (или как там его). В первотопике песочницы не нашёл.
надо наверно в "Отвлеченных" завести тему , что-то типа "Ищу ссылку" :)
Имеется вот такой код
По моим представлениям он должен делать так:
С Вашим представлением я спорить не буду, а по моим представлениям код должен делать в точности то, что написано.
Что, собственно, и происходит.
http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/predstavlenie-...
Сейчас перечитал, там как-то размазано. Можно короче сказать: всякий раз, когда в переменной получается то-либо не представимое её типом - это "неопределённое поведение":
А если union накладывает на одну память переменные типов A и B, то манипуляции с переменной типа A могут запросто привести к тому в переменной типа B окажется нечто в её типе не представимое. Вот и "undefined behavior" в полный рост.
А мне ссылку на автомат Милли (или как там его). В первотопике песочницы не нашёл.
http://arduino.ru/forum/otvlechennye-temy/private-property-no-trespassin...
Там дальше по теме уточнения, ответы на вопросы и пример.
спасибо