Я пытаюсь проверить некоторые домашние ответы о переполнении для дополнения, вычитания и т. Д., И мне интересно, могу ли я указать размер типа данных. Например, если я хочу посмотреть, что произойдет, когда я попытаюсь назначить -128 или -256 для 7-битного беззнакового int.Есть ли способ указать размер int в C?
ответ
При дальнейшем чтении я вижу, что вы хотели размеры бит, которые не являются нормальными, например, 7 бит и 9 бит и т.д. Вы можете добиться этого с помощью битовые
struct bits9
{
int x : 9;
};
Теперь вы можете использовать этот тип bits9
, который имеет одно поле в нем x
, что составляет всего 9 бит в размере.
struct bits9 myValue;
myValue.x = 123;
Спасибо, это то, что я искал. – Austin
Наименьший размер, который у вас есть, - это char, который является 8-битным целым числом. У вас могут быть неподписанные и подписанные символы. Взгляните на заголовок stdint.h. Он определяет типы int для вас независимо от платформы. Также нет такой вещи, как 7-битное целое число.
'char' is * не менее * 8 бит. –
Ну 7 бит - гипотетический размер для вопросов, связанных с домашним заданием, которые у меня есть. Он просит определить, есть ли переполнение, когда вы добавляете определенные положительные и отрицательные значения в 7, 8 и 9-разрядные процессоры. Я пытался проверить свои ответы с помощью C, но я думаю, что не могу. – Austin
Использование встроенных типов у вас есть такие вещи, как:
char value1; // 8 bits
short value2; // 16 bits
long value3; // 32 bits
long long value4; // 64 bits
Примечание В этом случае с компилятором от Microsoft на Windows. В стандарте C не указаны точные ширины, отличные от «этот должен быть как минимум такой же большой, как этот другой» и т. Д. Если вам нужна только конкретная платформа, вы можете распечатать размеры ваших типов и использовать их, как только вы вычислил их.
В качестве альтернативы вы можете использовать stdint.h
, который находится в стандарте C99. Он имеет типы с шириной в названии, чтобы понять
int8_t value1; // 8 bits
int16_t value2; // 16 bits
int32_t value3; // 32 bits
int64_t value4; // 64 bits
Для произвольного значения размера, вы можете использовать bitfields в структурах. Например, для 7-битового значения:
struct something {
unsigned char field:7;
unsigned char padding:1;
};
struct something value;
value.field = -128;
- 1. Есть ли способ указать область?
- 2. Есть ли простой способ указать значение int в xaml
- 3. Есть ли способ указать размер изображения в файле ресурсов?
- 4. Есть ли способ проверить int int легко?
- 5. Есть ли способ преобразовать строку в int *?
- 6. Есть ли способ указать класс объектов NSMutableArray?
- 7. Есть ли способ указать размеры вложенного STL-вектора C++?
- 8. Есть ли способ указать переполнение в CSS?
- 9. Есть ли способ указать спецификатор в printf?
- 10. Есть ли способ указать метод во время выполнения в C#
- 11. Есть ли способ указать платформу для os.path?
- 12. Есть ли разница между «const int» и «int» в C++?
- 13. Есть ли способ конвертировать текст в int?
- 14. Есть ли способ указать «пустое» выражение C# лямбда?
- 15. Есть ли способ указать контроллер для {{render}}?
- 16. Typcript - есть ли способ указать глобальную ссылку?
- 17. Есть ли способ указать ширину встроенного gist?
- 18. есть ли способ указать максимальную длину предпочтения?
- 19. Есть ли способ указать точку drag_to?
- 20. Есть ли способ указать формат ввода date.js?
- 21. Есть ли способ найти мощность (размер) перечисления в C++?
- 22. Есть ли способ взглянуть на размер массива?
- 23. Есть ли способ изменить размер изображения быстрее?
- 24. Есть ли способ увеличить размер стека/рекурсию?
- 25. Есть ли способ указать позицию/индекс аргумента в NSString stringWithFormat?
- 26. Есть ли более короткий способ вывода C int с puts?
- 27. Есть ли способ указать несколько LayoutFlags в XAML Xamarin?
- 28. Есть ли способ установить Int 001
- 29. Есть ли способ указать размер массива в базовом классе в унаследованном классе?
- 30. Есть ли способ масштабирования кнопок в C#?
http://en.cppreference.com/w/cpp/header/cstdint – ApproachingDarknessFish
Я в общей сложности программирования нуб, я могу установить символы для INT значения, и они «Хорошо? Также unsigned char не является 7-битным? – Austin
'char' имеет самый маленький размер. Это 8 или более бит. – emlai