|
Глюк IAR или мой, приведение типов |
|
|
|
 |
Ответов
(1 - 12)
|
May 7 2008, 12:18
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата unsigned long long tmp = (unsigned int) data; Ну и чему вы удивляетесь? int упорядочен по 2 байта, вот и получите! Если уж приводить к типу, то хотя бы к такому же, то есть unsigned long long tmp =(unsigned long long)data
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
May 7 2008, 13:07
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(MrYuran @ May 7 2008, 15:18)  Ну и чему вы удивляетесь? int упорядочен по 2 байта, вот и получите! Неверно. Тут не работа с указателями и числами в памяти. Цитата(MrYuran @ May 7 2008, 15:18)  Если уж приводить к типу, то хотя бы к такому же, то есть unsigned long long tmp =(unsigned long long)data Снова неверно. Исходное число было знаковым, поэтому при таком преобразовании знак будет расширен в старшие байты. В вашем варианте приведение вообще не нужно - оно будет сделано автоматически.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
May 7 2008, 13:10
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(MrYuran @ May 7 2008, 16:18)  Ну и чему вы удивляетесь? int упорядочен по 2 байта, вот и получите!
Если уж приводить к типу, то хотя бы к такому же, то есть unsigned long long tmp =(unsigned long long)data Пробовал, не помогает, да это и не принципиально ИМХО. А выделенную фразу поясните, если нетрудно. Версия 4.12 для AVR.
|
|
|
|
|
May 7 2008, 13:18
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(prottoss @ May 7 2008, 16:01)  У меня получилось как положено = 0x000000000000ABD6
IAR C/C++ Compiler for ARM 4.42A Evaluation (4.42.1.201) Повезло. АРМ существо 32-разрядное, там вероятность "перекоса" 64р слов меньше, чем в 8-битном АВР, всего лишь 50х50 стоп... Цитата получаю tmp = 0x6dba000000000000 чё, на самом деле задом наперёд? я чё-то не посмотрел сначала.. Тогда непонятно вообще
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
May 8 2008, 07:37
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
long_long.zip ( 38.37 килобайт )
Кол-во скачиваний: 191Цитата(prottoss @ May 7 2008, 17:39)  Проверил для AVR - опять правильный результат = 0x000000000000ABD6
IAR C/C++ Compiler for AVR 4.30A/W32 [Evaluation] (4.30.1.3) Прикрепляю простой тестовый примерчик.
|
|
|
|
|
May 8 2008, 08:00
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(MrYuran @ May 8 2008, 11:49)  Дык, ёлы-палы, отображение просто задом наперёд, а не данные Ok! Это видимо IARовцы так с 1 апреля поздравляют
|
|
|
|
|
May 8 2008, 09:57
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(VladimirYU @ May 8 2008, 12:00)  Ok! Это видимо IARовцы так с 1 апреля поздравляют Посмотрел, в версии 5.10 эту прелесть убрали.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|