4.5 Целые числа
- Любые расширенные типы целых чисел, которые существуют в реализации (C99 и C11 6.2.5).
GCC не поддерживает расширенные типы целых чисел.
- Представление знаковых типов целых чисел с помощью знака и величины, дополнительного кода или модуля дополнения до единицы, а также то, является ли исключительное значение представлением ошибки или обычным значением (C99 и C11 6.2.6.2).
GCC поддерживает только типы целых чисел в дополнительном коде, и все битовые шаблоны являются обычными значениями.
- Ранг любого расширенного типа целых чисел относительно другого расширенного типа целых чисел с той же точностью (C99 и C11 6.3.1.1).
GCC не поддерживает расширенные типы целых чисел.
- Результат или сигнал, генерируемый при преобразовании целого числа в знаковый тип целого числа, когда значение не может быть представлено в объекте этого типа (C90 6.2.1.2, C99 и C11 6.3.1.3).
Для преобразования в тип шириной N значение уменьшается по модулю 2^N, чтобы оно было в пределах диапазона типа; никакой сигнал не генерируется.
- Результаты некоторых побитовых операций над знаковыми целыми числами (C90 6.3, C99 и C11 6.5).
Побитовые операторы действуют на представление значения, включая как биты знака, так и биты величины, где бит знака рассматривается как непосредственно над битом значения с наибольшим значением. Знаковый оператор ‘>>’ действует на отрицательных числах путем расширения знака.
В качестве расширения языка C, GCC не использует предоставленную в C99 и C11 свободу, чтобы рассматривать некоторые аспекты знакового оператора ‘<<’ как неопределённые. Однако -fsanitize=shift (и -fsanitize=undefined) будут диагностировать такие случаи. Они также диагностируются в случае константных выражений.
- Знак остатка при делении целых чисел (C90 6.3.5).
GCC всегда следует требованию C99 и C11, что результат деления усекается к нулю.
Далее: Реализация чисел с плавающей точкой, Предыдущее: Реализация символов, Наверх: Реализация C [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.5.0/gcc/Integers-implementation.html