Можно ли создать новый тип в C, который использует количество байтов, которое я решу?
Да, вы можете объявить массив из char
(или signed char
или unsigned char
) любой положительной длины, которая вам нравится, вплоть до зависящего от реализации (но обычно большого) предела.
Я знаю, что int занимает 4 байта,
Вы ошибаетесь: int
может занимать четыре байта, но стандарт не требует этого. Его минимальный требуемый диапазон может быть представлен только двумя байтами, а некоторые реализации действительно предоставляют двухбайтовые int
с. Это было более распространено исторически, чем сегодня. Кроме того, реализация может сделать int
больше , чем четыре байта. Это редко по умолчанию, но некоторые компиляторы предоставляют возможность получить такой результат.
но мне нужно работать с очень маленькими числами, поэтому выделение 4 байтов с помощью malloc для каждого int - это пустая трата времени, я думал о создании нового типа для чисел, который занимает всего 1 байт ... если это возможно.
Однобайтовое число - это signed char
или unsigned char
. Технически, простой char
также подходит, но его подпись определяется реализацией, и в качестве стиля предпочтительнее резервировать его использование для символьных данных. Кроме того, технически, char
и его варианты со знаком и без знака могут быть больше, чем 8 бит, но вы вряд ли когда-либо столкнетесь с реализацией C, где это так, и C в любом случае предлагает не меньший тип данных.