|
1 / 1 / 0
Регистрация: 10.06.2013
Сообщений: 153
|
|
Интерпретация переменной типа int как float16.08.2021, 20:49. Показов 9949. Ответов 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
|
|||||||||||||||||||||||||
|
Нарушитель
10896 / 5830 / 1289
Регистрация: 12.03.2015
Сообщений: 26,901
|
|
| 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
|
||||||||||||
|
Вездепух
13229 / 6861 / 1827
Регистрация: 18.10.2014
Сообщений: 17,393
|
||
| 16.08.2021, 22:06 | ||
|
В очередной раз спрошу с нескрываемым удивлением: вот это вот "транслируются и успешно исполняются" - это такой троллинг? Или здесь все действиельно настольоко запущено?
0
|
||
|
Нарушитель
10896 / 5830 / 1289
Регистрация: 12.03.2015
Сообщений: 26,901
|
||
| 16.08.2021, 22:06 | ||
|
0
|
||
|
Вездепух
13229 / 6861 / 1827
Регистрация: 18.10.2014
Сообщений: 17,393
|
|
| 16.08.2021, 22:07 | |
|
0
|
|
|
Супер-модератор
|
|
| 16.08.2021, 22:12 | |
|
TheCalligrapher, нет это не троллинг. Это вопрос к системе типов. Что стоило просто запретить подобные преобразования - и не было бы проблем. Если Вы мне объясните это (и я пойму), то буду благодарен... Когда меня убеждают - я соглашаюсь.
А вот когда мне заявляют менторским тоном "Это так и никак иначе", а на вопрос "Почему?" отвечают "Потому", то я упираюсь. Мне кажется, это мое право.
2
|
|
|
Вездепух
13229 / 6861 / 1827
Регистрация: 18.10.2014
Сообщений: 17,393
|
||||
| 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
|
|
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,087
|
|||||||||||||||||
| 17.08.2021, 10:12 | |||||||||||||||||
Добавлено через 7 минут
3
|
|||||||||||||||||
|
Нарушитель
10896 / 5830 / 1289
Регистрация: 12.03.2015
Сообщений: 26,901
|
||
| 17.08.2021, 10:17 | ||
|
Я вчера так и не смог придумать пример UB для union {uint32_t x; float y; }. Если у int сменить порядок байтов, то у float он тоже должен измениться, разве нет?З.Ы. Хорошо, что я в своё время выбрал себе основным языком программирования язык со строгой типизацией.
0
|
||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,087
|
||
| 17.08.2021, 10:27 | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||
| 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
|
|||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,087
|
|||||||||||
| 17.08.2021, 13:38 | |||||||||||
Ну а агрессивное навязывание своих фантазий, противоречащих реальному миру, и выглядит как бесполезные крики. Как полагались люди на безопасность переполнения знаковых чисел, так и будут. Как кастовали что угодно к чему угодно, так и будут. Как считали байт восьмибитным, так и будут считать. Не нравится - пусть идет в другие языки, где подобные вольности не дозволяются.
0
|
|||||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||
| 17.08.2021, 13:49 | |||||
|
Добавлено через 1 минуту Речь же не об этих случаях.
0
|
|||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,087
|
|||||
| 17.08.2021, 14:49 | |||||
|
0
|
|||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||
| 17.08.2021, 14:58 | |||||
|
0
|
|||||
| 17.08.2021, 14:58 | |
|
Почему диапазон значений у типа float больше, чем у типа int, если они оба занимают 4 байта? Как число типа 2.88007e+018 привести в обычный int, float или просто вывести
Переменной d присвоить первую цифру после запятой некоторой переменной x типа float Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|