|
1 / 1 / 0
Регистрация: 10.06.2013
Сообщений: 153
|
|
Интерпретация переменной типа int как float16.08.2021, 20:49. Показов 9848. Ответов 53
Метки нет (Все метки)
0
|
|
| 16.08.2021, 20:49 | |
|
Ответы с готовыми решениями:
53
ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int) |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||||||||||
| 16.08.2021, 21:53 | |||||||||||||||||||||||||
наверное, ты имел ввиду:
трюк с объединением прокатывает на всех топовых компиляторах, тем не менее, формально, такой код содержит UB. лично я не стал бы ставить на такой код свою карьеру. зачем? если можно просто написать корректный код Добавлено через 6 минут в новом с++ можно воспользоваться std::launder и это - единственный легальный способ реинтерпретировать "теплое" как "мягкое"
2
|
|||||||||||||||||||||||||
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
|
| 16.08.2021, 21:55 | |
|
0
|
|
|
Супер-модератор
|
||
| 16.08.2021, 21:58 | ||
Невольно возникает вопрос: почему язык не запрещает подобные конструкции? Или конкретнее - почему их пропускает компилятор?
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||
| 16.08.2021, 22:00 | ||||||||||||
0
|
||||||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,312
|
||
| 16.08.2021, 22:06 | ||
|
В очередной раз спрошу с нескрываемым удивлением: вот это вот "транслируются и успешно исполняются" - это такой троллинг? Или здесь все действиельно настольоко запущено?
0
|
||
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
||
| 16.08.2021, 22:06 | ||
|
0
|
||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,312
|
|
| 16.08.2021, 22:07 | |
|
0
|
|
|
Супер-модератор
|
|
| 16.08.2021, 22:12 | |
|
TheCalligrapher, нет это не троллинг. Это вопрос к системе типов. Что стоило просто запретить подобные преобразования - и не было бы проблем. Если Вы мне объясните это (и я пойму), то буду благодарен... Когда меня убеждают - я соглашаюсь.
А вот когда мне заявляют менторским тоном "Это так и никак иначе", а на вопрос "Почему?" отвечают "Потому", то я упираюсь. Мне кажется, это мое право.
2
|
|
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,312
|
||||
| 16.08.2021, 22:17 | ||||
std::launder не имеет. Требование std::launder<T> - по целевому адресу располагается именно объект типа T.Добавлено через 4 минуты https://stackoverflow.com/ques... asing-rule https://habr.com/ru/company/otus/blog/442554/
2
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 16.08.2021, 22:19 | |
|
0
|
|
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,064
|
|||||||||||||||||
| 17.08.2021, 10:12 | |||||||||||||||||
Добавлено через 7 минут
3
|
|||||||||||||||||
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
||
| 17.08.2021, 10:17 | ||
|
Я вчера так и не смог придумать пример UB для union {uint32_t x; float y; }. Если у int сменить порядок байтов, то у float он тоже должен измениться, разве нет?З.Ы. Хорошо, что я в своё время выбрал себе основным языком программирования язык со строгой типизацией.
0
|
||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,064
|
||
| 17.08.2021, 10:27 | ||
|
0
|
||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|||||
| 17.08.2021, 11:53 | |||||
|
Добавлено через 19 минут Вся аргументация про высокоуровневый ассемблер и грамотный код справедлива только для первых двух понятий, но никак не для последнего. Кроме того, как было уже сказано, в языке С разрешен type punning через union, в языке С это не UB. Кроме того, разработчики компиляторов С++ прекрасно знают, что трюк с реинтерпретацией через union очень популярен и в коде на С++, поэтому не реализуют никаких помех для его выполнения. Но это не делает код корректным, так же как не делает правильным забег через дорогу на красный свет, не смотря на то, что миллионы человек могут похвастаться, что с ними во время этого ничего не случилось. Можно или нельзя в конкретном проекте плевать на несоответствие кода спецификации (в части корректности) - это вообще отдельный вопрос, который тут не обсуждался даже.
0
|
|||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 17.08.2021, 12:28 | |||
|
если ты даже не понял, зачем он был нужен?
0
|
|||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,064
|
|||||||||||
| 17.08.2021, 13:38 | |||||||||||
Ну а агрессивное навязывание своих фантазий, противоречащих реальному миру, и выглядит как бесполезные крики. Как полагались люди на безопасность переполнения знаковых чисел, так и будут. Как кастовали что угодно к чему угодно, так и будут. Как считали байт восьмибитным, так и будут считать. Не нравится - пусть идет в другие языки, где подобные вольности не дозволяются.
0
|
|||||||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|||||
| 17.08.2021, 13:49 | |||||
|
Добавлено через 1 минуту Речь же не об этих случаях.
0
|
|||||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,064
|
|||||
| 17.08.2021, 14:49 | |||||
|
0
|
|||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|||||
| 17.08.2021, 14:58 | |||||
|
0
|
|||||
| 17.08.2021, 14:58 | |
|
Почему диапазон значений у типа float больше, чем у типа int, если они оба занимают 4 байта? Как число типа 2.88007e+018 привести в обычный int, float или просто вывести
Переменной d присвоить первую цифру после запятой некоторой переменной x типа float Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс
Ссылка на сгенерированную музыкальную композицию:
https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013
Я говорю, что Время- как вода
течет. . .
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Салют, шампанское, овации!
:drink:
|