Я прочитал, что компиляторы C должны выделить 2 байта для типа short и должны выделить 4 байта для типа long. Таким образом, в зависимости от системы тип int может иметь 2 байта или 4 байта. Итак, в чем его цель? Если нам понадобится 2 байта, мы можем использовать short, и если нам нужно 4-байтное число, мы можем использовать long. Мне кажется, что int похож на азартные игры, если система 16-бит или нет. (я вообще не понимаю, почему C не может самостоятельно решить, сколько памяти требуется для номера, как это делает Python)Каково использование типа int в C?
ответ
В B, предком C, единственным типом был int
. Это был размер «машинного слова», который, как правило, означает размер регистра 16 бит в 16-разрядной системе, 32 бита в 32-битной системе и т. Д. C просто сохранил этот тип. short
и long
были введены в качестве способов управления складским пространством, когда требуется меньшее или большее расстояние. Это имеет значение, когда доступная память ограничена: зачем выделять long
, когда вы знаете, что значение никогда не будет превышать диапазон short
?
Я вообще не понимаю, почему C не может решить сам по себе, сколько памяти требуется для номера, так же, как Python делает
Python решает это динамически, используя arbitrary-precision представление. C решает это статически и требует, чтобы он был указан программистом. Существуют статически типизированные языки, в которых аннотации типа не требуются, из-за type inference. Если вам нужны целые числа с произвольной точностью в C, вы можете использовать GMP, который предоставляет mpz_t
и множество других типов и функций для арифметики произвольной точности.
Я вижу. Спасибо за ответ! – ClassicEndingMusic
- 1. Каково использование Easymock.and (int, int)? аргумент Искатель
- 2. Каково использование _ в Int => Int = _ + 1
- 3. Каково использование типа данных переменной
- 4. Каково использование CommandType.StoredProcedure в C#?
- 5. C++: Каково использование int ('0') в этом коде?
- 6. Каково использование кеша в провайдере типа csv?
- 7. Каково использование (Подчеркивание) в C?
- 8. Каково точное значение «int const *» в C?
- 9. Каково использование типа «нуль» для любого ссылочного типа в JAVA?
- 10. Каково точное значение «безопасности типа» на C++?
- 11. C Программирование: Каково использование подчеркивания?
- 12. Каково определение неполного типа и типа объекта в C?
- 13. Каково поведение int & a = * b?
- 14. Каково использование ключевого слова «yield» в C#?
- 15. Каково использование блока 'using' в C#?
- 16. Каково использование возврата динамического значения в C#
- 17. Каково использование ключевого слова `default` в C#?
- 18. Каково использование ключевого слова global :: в C#?
- 19. Каково значение использования оператора типа: int a = 12L;
- 20. C - Каково определение типа переменной в следующем коде?
- 21. Каково использование $ в angularjs
- 22. использование Int указателя в C
- 23. C создание нового типа int
- 24. Каково использование вызова SurfaceHolder.setFixedSize()?
- 25. Каково использование виртуального деструктора?
- 26. Каково использование типа проекта Local Cache в Visual Studio?
- 27. C++ Отсутствует спецификатор типа - int?
- 28. Каково использование while (1)?
- 29. Каково использование метода скрытия?
- 30. Каково точное поведение инструкции INT?
«Компиляторы C должны выделять 2 байта для короткого типа и должны выделять 4 байта для типа long» - это неверно, единственное требование для размеров целых типов заключается в том, что 'sizeof (char) == 1' , Фактически, в моей системе 'long' является 64-битным. (** edit ** я ошибаюсь) – Adrian
О, я прочитал это в своем учебнике .. – ClassicEndingMusic
Возможно, вы захотите получить другой учебник – Adrian