Показать сообщение отдельно

  #4672  
Старый 02.08.2020, 19:17
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от loganhackerdff  

а почему инменно reinterept_cast а не static_cast и не простое разименование указателя?
Потому что reinterpret_cast буквально говорит: Видишь тут хранится float? Вот, считай что теперь это int

А static_cast пытается сохранить значение. Т.е. float 4.0f превратится в int 4, а не в миллион

И получается тебе надо взять тот же указатель, но чтобы процессор расценивал его как void*, Поэтому реинтерпрет каст

Тут более подробно распишу для тех кому интересно:

4 типа int хранится в памяти как 0x00000004, а 4 типа float хранится как 0x00008040

Если сделать reinterpret_cast 4 типа float к int, то получим 1082130432, а не как мы ожидали 4.

Static cast же сделает из 0x00008040 0x00000004

Да, я знаю что нельзя кастовать float к int, просто мне было удобно это для примера (Ограничение можно обойти через memcpy)
 
Ответить с цитированием