C: избежать переполнения при работе с большими числами

Просто используйте WeakReferences для отбрасываемых результатов, тогда они будут отброшены, если необходимо, по соображениям пространства.

16
задан Alex Zakharenko 18 April 2012 в 16:56
поделиться

2 ответа

Посмотрите на -ftrapv и -fwrapv :

-ftrapv

Эта опция генерирует ловушки для переполнения со знаком при сложении, вычитании, операции умножения.

-fwrapv

Этот параметр заставляет компилятор предполагать, что знаковое арифметическое переполнение сложения, вычитания и умножения оборачивается с использованием представления с двойным дополнением. Этот флаг включает некоторые оптимизации и отключает другие. Эта опция включена по умолчанию для внешнего интерфейса Java, как того требует спецификация языка Java.

См. Также Целочисленное переполнение в C: стандарты и компиляторы и Полезные флаги GCC для C .

12
ответ дан Community 18 April 2012 в 16:56
поделиться

clang теперь поддерживает динамические проверки переполнения для целых чисел со знаком и без знака. Смотрите переключатель -fsanitize = integer . На данный момент это только один компилятор C ++ с полностью поддерживаемой динамической проверкой переполнения для целей отладки.

1
ответ дан ZAB 18 April 2012 в 16:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: