vak: (Default)
[personal profile] vak
Как сложить/вычесть/умножить два числа на Си и отловить факт переполнения? Не теоретически, а по делу. Желательно не теряя эффективности.

Для этого в компиляторах GCC и Clang есть соответствующие встроенные функции.

Date: 2024-09-02 07:13 (UTC)
From: [personal profile] vsold_1986
Интересно, что в борланде подобные вопросы автоматически решались с помощью исключений (exception), и, видимо, их отлов в критических местах с помощью блока catch не приводил к какому-то существенному падению производительности.
Перейдя же на Qt, я с неприятным удивлением обнаружил, что ничего тут не бросается (throw) и подобные ситуации надо обрабатывать ручками.
Очень странно, что в стандарте языка это никак не оговорено, поскольку ситуация типичная и очень требует универсального решения.

Date: 2024-09-02 08:30 (UTC)
From: [personal profile] chabapok
> Очень странно, что в стандарте языка это никак не оговорено, поскольку ситуация типичная и очень требует универсального решения.

в с23 есть "#include
[Error: Irreparable invalid markup ('<stdckdint.h>') in entry. Owner must fix manually. Raw contents below.]

> Очень странно, что в стандарте языка это никак не оговорено, поскольку ситуация типичная и очень требует универсального решения.

в с23 есть "#include<stdckdint.h>", там есть всякие ckd_add

(правда это уже как мертвому припарка)
Edited Date: 2024-09-02 08:31 (UTC)