реклама на сайте
подробности

 
 
> Глюк IAR или мой, приведение типов
VladimirYU
сообщение May 7 2008, 12:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



В 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

?????????????
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MrYuran
сообщение May 7 2008, 12:18
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 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 =)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 7 2008, 13:07
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 10:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016