Я пытаюсь выжать из своей памяти как можно больше. У меня есть матрица из 4.9999995e13
целых чисел, но они должны быть только истинными или ложными - в основном мне нужен только один бит памяти для каждого из этих целых чисел.
Я понимаю, что в C нет однобитных типов (может быть, кто-то может объяснить мне, почему), и я также знаю, что если бы существовал short short int
, он был бы 1 байтом, таким же, как char. Однако все логические операции в C возвращают целые числа (как и некоторые другие функции).
Итак, мои вопросы:
- Есть ли способ заставить
short short int
существовать? - Если бы вместо этого я использовал
char
, снизилась бы производительность из-за всего приведения кint
, которое нужно было бы сделать? - Есть ли другой способ, который мне не хватает?
На всякий случай, если это уместно, я компилирую с помощью GCC для C99.
ИЗМЕНИТЬ Я только что увидел на этой странице википедии, что там это тип _Bool
, это действительно стандарт?
int
? - person aardvarkk   schedule 14.07.2011char
в качестве базового типа битового поля в C определяется реализацией (поэтому я не публиковал его в качестве ответа, потому что сейчас мне не хочется создавать 32 битовых поля для unsigned int), но работает для GCC. - person Johannes Schaub - litb   schedule 14.07.2011