Хобрук: Ваш путь к мастерству в программировании

Преобразование double* в int* в C++

Название довольно понятное. Я хочу преобразовать тип double * в тип int *. Я понимаю, что могу использовать приведение C-типа (int *), чтобы делать то, что хочу, но есть ли способ сделать это приведение, используя приведение типа C++, то есть static_cast и т. д.?

26.10.2013

  • почему ты хочешь сделать это? Вы хотите превратить double в int? 26.10.2013
  • Как указывалось другим, вы не будете приводить значение таким образом. Даже если это не то, что вам нужно, ваш код может не работать из-за строгих правил алиасинга. 26.10.2013
  • Другой способ сделать что-то подобное — сделать объединение с двойным и int. 26.10.2013

Ответы:


1

Вы можете выполнить это приведение, используя reinterpret_cast:

int* veryUnsafePointer = reinterpret_cast<int*>(myDoublePointer);

Имейте в виду, что это не возвращает целочисленное представление double, на которое указывает указатель; вместо этого значение целого числа будет зависеть от двоичного представления double и порядка байтов системы.

Надеюсь это поможет!

26.10.2013
  • Итак, кажется, вы хотите прочитать внутреннее представление double. Знаете ли вы, что double, скорее всего, больше, чем int? (В большинстве систем 8 против 4 байт) 26.10.2013
  • Разыменование результата этого приведения имеет неопределенное поведение из-за строгого правила псевдонимов. 02.09.2017

  • 2

    Вам нужно использовать reinterpret_cast<int *>(ptr).

    Надеюсь, вы действительно знаете, что делаете. Очень мало причин делать такой слепок, особенно если это, вероятно, double и int разного размера.

    26.10.2013
    Новые материалы

    Как симулировать серию пенальти на Python с помощью симуляции Монте-Карло, часть 1: генерация функций
    Серия пенальти была огромным испытанием во время чемпионата мира по футболу. Они вызвали много споров в социальных сетях и новостных агентствах. Даже финальный матч турнира решался по..

    AST для разработчиков JavaScript
    TL; DR Эта статья - мое выступление на недавно состоявшейся конференции Stockholm ReactJS Meetup. Вы можете посмотреть слайды здесь..

    5 проектов на Python, которые нужно создать прямо сейчас!
    Добро пожаловать! Python — один из моих любимых языков программирования. Если вы новичок в этом языке, перейдите по ссылке ниже, чтобы узнать о нем больше:

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..