Есть ли разница: ...
От: Лекс Россия  
Дата: 14.10.05 11:54
Оценка:
Всем привет,
я не вижу разницы между этими двумя вариантами, а Вы?

const float f1 = 1.;
int *p1;

      //ВАРИАНТ 1
p1 = const_cast<int*>(reinterpret_cast<const int*>(&f1));

      //ВАРИАНТ 2
p1 = reinterpret_cast<int*>(const_cast<float*>(&f1));



Спасибо за внимание,
Лекс


З.Ы. Про потерю точности (и про:
*p1 = 2; // *p1 == 2; f1 != 2
) и неадекватность поведения const_cast можно не упомянать..
C Уважением,
Андрей.
Re: Есть ли разница: ...
От: Balsamo Россия  
Дата: 14.10.05 12:13
Оценка: :)
Здравствуйте, Лекс, Вы писали:

Л>Всем привет,

Л>я не вижу разницы между этими двумя вариантами, а Вы?

Л>
Л>const float f1 = 1.;
Л>int *p1;

Л>      //ВАРИАНТ 1
Л>p1 = const_cast<int*>(reinterpret_cast<const int*>(&f1));

Л>      //ВАРИАНТ 2
Л>p1 = reinterpret_cast<int*>(const_cast<float*>(&f1));
Л>



Л>Спасибо за внимание,

Л> Лекс


Л>З.Ы. Про потерю точности (и про:
*p1 = 2; // *p1 == 2; f1 != 2
) и неадекватность поведения const_cast можно не упомянать..


Вообще говоря, такой код сильно зависит от реализации. Из стандарта С++ reinterpret_cast: преобразование указатель на объект одного типа в указатель на объект другого типа ведет к неопределенному поведению. размер int должен быть таким, чтобы float в нем умещался, а иначе то, что выше написано.
А так по существу вопроса...
Кажется разницы нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.