VladimirYU 0 7 мая, 2008 Опубликовано 7 мая, 2008 · Жалоба В IAR AVR 4.12 столкнулся вот с чем: // имею int data = 0xabd6; // хочу увеличить разрядность до 32 без знака unsigned int tmp = (unsigned int) data; // получаю tmp = 0x0000abd6, что и хотел а теперь вместо 32 захотел увеличить разрядность до 64 без знака из исходного data unsigned long long tmp = (unsigned int) data; // получаю tmp = 0x6dba000000000000 ????????????? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freeze 0 7 мая, 2008 Опубликовано 7 мая, 2008 · Жалоба а long два раза стоит это опечатка или зачем? а если отдать на усмотрение компилятора приведение типов, то есть записать unsigned long tmp = data что получается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 18 7 мая, 2008 Опубликовано 7 мая, 2008 · Жалоба unsigned long long tmp = (unsigned int) data; Ну и чему вы удивляетесь? int упорядочен по 2 байта, вот и получите! Если уж приводить к типу, то хотя бы к такому же, то есть unsigned long long tmp =(unsigned long long)data Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 7 мая, 2008 Опубликовано 7 мая, 2008 · Жалоба а long два раза стоит это опечатка или зачем? long long - это тип такой. Целое 64 разряда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 7 мая, 2008 Опубликовано 7 мая, 2008 · Жалоба У меня получилось как положено = 0x000000000000ABD6 IAR C/C++ Compiler for ARM 4.42A Evaluation (4.42.1.201) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 128 7 мая, 2008 Опубликовано 7 мая, 2008 · Жалоба Ну и чему вы удивляетесь? int упорядочен по 2 байта, вот и получите! Неверно. Тут не работа с указателями и числами в памяти. Если уж приводить к типу, то хотя бы к такому же, то есть unsigned long long tmp =(unsigned long long)dataСнова неверно. Исходное число было знаковым, поэтому при таком преобразовании знак будет расширен в старшие байты. В вашем варианте приведение вообще не нужно - оно будет сделано автоматически. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 7 мая, 2008 Опубликовано 7 мая, 2008 · Жалоба Ну и чему вы удивляетесь? int упорядочен по 2 байта, вот и получите! Если уж приводить к типу, то хотя бы к такому же, то есть unsigned long long tmp =(unsigned long long)data Пробовал, не помогает, да это и не принципиально ИМХО. А выделенную фразу поясните, если нетрудно. Версия 4.12 для AVR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 18 7 мая, 2008 Опубликовано 7 мая, 2008 · Жалоба У меня получилось как положено = 0x000000000000ABD6 IAR C/C++ Compiler for ARM 4.42A Evaluation (4.42.1.201) Повезло. АРМ существо 32-разрядное, там вероятность "перекоса" 64р слов меньше, чем в 8-битном АВР, всего лишь 50х50 стоп... получаю tmp = 0x6dba000000000000 чё, на самом деле задом наперёд? я чё-то не посмотрел сначала.. Тогда непонятно вообще Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 7 мая, 2008 Опубликовано 7 мая, 2008 · Жалоба Проверил для AVR - опять правильный результат = 0x000000000000ABD6 IAR C/C++ Compiler for AVR 4.30A/W32 [Evaluation] (4.30.1.3) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 8 мая, 2008 Опубликовано 8 мая, 2008 · Жалоба long_long.zip Проверил для AVR - опять правильный результат = 0x000000000000ABD6 IAR C/C++ Compiler for AVR 4.30A/W32 [Evaluation] (4.30.1.3) Прикрепляю простой тестовый примерчик. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 18 8 мая, 2008 Опубликовано 8 мая, 2008 · Жалоба long_long.zip Прикрепляю простой тестовый примерчик. Дык, ёлы-палы, отображение просто задом наперёд, а не данные ps: а просто картинку нельзя было приклеить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 8 мая, 2008 Опубликовано 8 мая, 2008 · Жалоба Дык, ёлы-палы, отображение просто задом наперёд, а не данные Ok! Это видимо IARовцы так с 1 апреля поздравляют Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 8 мая, 2008 Опубликовано 8 мая, 2008 · Жалоба Ok! Это видимо IARовцы так с 1 апреля поздравляют Посмотрел, в версии 5.10 эту прелесть убрали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться