The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"В языке системного программирования Hare реализована поддерж..."
Отправлено Аноним, 06-Дек-23 16:12 
> О боже...
> integer overflow это не UB. Это прямое следствие лежащего под софтом железа

Вообще-то для именно signed int - таки UB. Хотя-бы потому что ... формат хранения signed int не специфицирован жестко и возможно несколько разных вариантов.

Что случится при wrap - "implementation defined" и зависит от формата хранения int. Полагаться на это нельзя. Хотя в C23, чтоли и где-то рядом в C++ оставили только один вариант, там еще есть какие-то шансы на defined.

Unsigned в этом лучше: там wrap явно прописан и это, таки, defined behavior.

Ах да, "int" - весьма растяжимое понятие. Ну вот например int 16 битов размером вполне валиден по стандартам. На некоторых платформах, типа ардуины, это даже можно и активировать, если горя хлебнуть хочется. Реально конечно большая часть софта дико лажанет если так сделать.

> и того, что Си не заявляет каких-то немыслимых абстракций. По такой
> логике, ошибки округления чисел с плавающей запятой в любом ЯП это UB.

У плавучки свои грабли. А в сях таки более чем достаточно UB - вплоть до того что если вы в 16-бит "int" загнали 65535 - то вообще ктулху его знает чему это будет на самом деле равно, с учетом сочетания факторов "формат хранения int" и "16 битное int".

...одна из причин по которым в C99 таки сделали более нормальные типы. К сожалению ума завершить что начали у комитета импотентов не хватило. Так что препроцессор оперирует чем-то другим, более близким к обычным типам. А считать он таки - может. Или например enum - да вообще удачи угадать какой у него эффективный тип. Он так специфицирован, что...

...и кстати если что-то typedef'нуть как enum и потом указать вот именно аргументом, имнено такой тип - компилеру класть что на вход дают значения котрых в этом enum и его typedef отродясь не было. И пользы от такого enum - сильно меньше чем могло бы быть. В плане зарубания багов.

Мораль сей басни такова: если ты юзаешь си - изволь почитать стандарты а также гайдлайны по antibug приемам. Иначе код у тебя будет, как бы это сказать...

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру