Типы программирования C - PullRequest
5 голосов
/ 04 мая 2009

Был задан вопрос, и я не уверен, дал ли я точный ответ или нет. Вопрос был в том, зачем использовать int, а не char, почему они разделены? Все это зарезервировано в памяти и битах, почему у типов данных есть категории?

Может ли кто-нибудь пролить на него свет?

Ответы [ 6 ]

10 голосов
/ 04 мая 2009

char - это наименьший адресуемый кусок памяти - хорошо подходит для манипулирования буферами данных, но не может содержать более 256 различных значений (если char - это 8 бит, что обычно) и, следовательно, не очень хорошо для числовых расчеты. int обычно больше char - больше подходит для вычислений, но не подходит для манипуляций на уровне байтов.

3 голосов
/ 04 мая 2009

Помните, что C иногда используется как язык ассемблера более высокого уровня - для взаимодействия с оборудованием низкого уровня. Вам нужны типы данных, чтобы соответствовать функциям машинного уровня, таким как регистры ввода-вывода в байтовом масштабе.

Из Википедия, C (язык программирования) :

Основное использование C для «системного программирования», включая реализацию операционных систем и приложений встроенных систем, благодаря сочетанию желательных характеристик, таких как переносимость и эффективность кода, возможность доступа к конкретным аппаратным адресам, способность «каламбурить» соответствуют внешним наложенным требованиям доступа к данным и низким требованиям времени выполнения к системным ресурсам.

1 голос
/ 04 мая 2009

Стандарт предписывает очень мало ограничений для char и int :

  • A char должен иметь возможность хранить значение ASCII, то есть 7-битовое минимальное значение (EDIT: CHAR_BIT составляет не менее 8 в соответствии со стандартом C). Это также самый маленький адресуемый блок памяти.

  • int имеет ширину не менее 16 бит и «рекомендуемый» тип целого числа по умолчанию. Эта рекомендация оставлена ​​для реализации (ваш компилятор C).

1 голос
/ 04 мая 2009

Раньше у компьютеров было мало памяти. Это было главной причиной, почему у вас были разные типы данных. Если вам нужна переменная для хранения только небольших чисел, вы можете использовать 8-битный символ вместо 32-битного. Однако память сегодня дешева. Поэтому эта причина менее применима сейчас, но все равно застряла.

Однако имейте в виду, что каждый процессор имеет тип данных по умолчанию в том смысле, что он работает с определенной шириной (обычно 32-битной). Таким образом, если вы используете 8-битный символ, значение должно быть расширено до 32-битного и обратно для вычисления. Это может немного замедлить ваш алгоритм.

0 голосов
/ 04 мая 2009

int - это натуральный целочисленный тип, его следует использовать для большинства вычислений.

char по сути является байтом; это самый маленький адресуемый блок памяти. char не 8-битная ширина на всех платформах, хотя в большинстве случаев это так.

0 голосов
/ 04 мая 2009

В общем, существуют алгоритмы и конструкции, которые являются абстракциями, а типы данных помогают в реализации этих абстракций. Например, существует высокая вероятность того, что вес обычно представляется в виде рационального числа, которое наилучшим образом может быть реализовано в хранилище в виде числа с плавающей запятой / двойного числа, то есть числа, которое имеет точность.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...