Потому что reinterpret_cast буквально говорит: Видишь тут хранится float? Вот, считай что теперь это intа почему инменно reinterept_cast а не static_cast и не простое разименование указателя?
А 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, просто мне было удобно это для примера :D(Ограничение можно обойти через memcpy)
Последнее редактирование: