Диапазоны типов данных
32-разрядные и 64-разрядные компиляторы Microsoft C++ распознают типы в таблице далее в этой статье.
Если имя начинается с двух символов подчеркивания ( __ ), тип данных является нестандартным.
Диапазоны, представленные в следующей таблице, включают указанные значения.
| Тип Имя | Байт | Другие имена | Диапазон значений |
|---|---|---|---|
| int | 4 | signed | От −2 147 483 648 до 2 147 483 647 |
| unsigned int | 4 | unsigned | От 0 до 4 294 967 295 |
| __int8 | 1 | char | От -128 до 127 |
| unsigned __int8 | 1 | unsigned char | От 0 до 255 |
| __int16 | 2 | short , short int , signed short int | От −32 768 до 32 767 |
| unsigned __int16 | 2 | unsigned short , unsigned short int | От 0 до 65 535 |
| __int32 | 4 | signed , signed int , int | От −2 147 483 648 до 2 147 483 647 |
| unsigned __int32 | 4 | unsigned , unsigned int | От 0 до 4 294 967 295 |
| __int64 | 8 | long long , signed long long | От −9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
| unsigned __int64 | 8 | unsigned long long | От 0 до 18 446 744 073 709 551 615 |
| bool | 1 | нет | false или true |
| char | 1 | нет | -128–127 по умолчанию |
В зависимости от характера использования переменная типа __wchar_t обозначает расширенный символьный или многобайтовый символьный тип. Чтобы указать константу расширенного символьного типа, перед символьной или строковой константой следует использовать префикс L .
signed и unsigned — это модификаторы, которые можно использовать с любым целочисленным типом, кроме типа bool . Обратите внимание, что char , signed char и unsigned char — это три разных типа, предназначенных для механизмов, подобных перегрузке и шаблонам.
Размер типов int и unsigned int — 4 байта. Однако переносимый код не должен зависеть от размера int , поскольку языковой стандарт позволяет варьировать его в зависимости от реализации.
C и C++ в Visual Studio также поддерживают целочисленные типы с указанием размера. Дополнительные сведения см. в разделе __int8, __int16, __int32, __int64 и ограничения целых чисел.
Дополнительные сведения об ограничениях размеров каждого типа см. в разделе «Встроенные типы».
Диапазон перечисляемых типов зависит от контекста языка и указанных флажков компилятора. Дополнительные сведения см. в статьях Объявления перечислений C и Объявления перечислений C++.
Диапазон целочисленных значений
Целочисленные типы данных содержат 32 бита (4 байта). Знаковые целочисленные типы представлены в форме дополнительного кода. В старшем бите содержится следующий знак: 1 означает отрицательные числа, 0 — положительные числа и ноль. Значения перечислены ниже:
| Type | Минимальное и максимальное значение |
|---|---|
| unsigned short | От 0 до 65535 |
| signed short | От -32768 до 32767 |
| unsigned long | От 0 до 4294967295 |
| signed long | От -2147483648 до 2147483647 |
#2 — Переменные и типы данных в Си
Переменные являются важной частью любого языка программирования. В ходе урока мы познакомимся с написанием переменных, а также изучим различные типы данных. Также мы научимся выводить и получать данные от пользователя.
Видеоурок
Переменные невероятно важны, так как позволяют хранить информацию и использовать её в дальнейшем. Вначале может быть не совсем понятно зачем вообще что-то записывать в переменную, если можно просто оперировать значениями без них. Понимание переменных придет немного позже, когда мы начнем создавать более сложные программы и нам потребуется хранить информацию в каком-либо месте.
Типы переменных в языке Си указываются перед названием переменной. От конкретного типа данных будет зависеть содержимое переменной. Если мы укажем что переменная с типом данных для целых чисел int , то в неё мы не сможем записать строку или число с точкой.
В ходе программы мы можем записывать новые значения в переменную, но тип данных должен оставаться неизменным:
float some_value = 2.95; some_value = 6.9; // Записали новое значение
Рассмотрим все типы данных для создания переменных.
Целые числа
- short — предназначен для хранения целых чисел. Диапазон чисел от -32 768 до 32 767;
- unsigned short — предназначен для хранения целых положительных чисел. Диапазон чисел от 0 до 65 535;
- int — предназначен для хранения целых чисел. Диапазон чисел от -2 147 483 648 до 2 147 483 647;
- unsigned int — предназначен для хранения целых положительных чисел. Диапазон чисел от 0 до 4 294 967 295;
- long — предназначен для хранения целых чисел. Диапазон чисел от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807;
- unsigned long — предназначен для хранения целых положительных чисел. Диапазон чисел от 0 до 18 446 744 073 709 551 615.
Разница между типами заключается только в диапазоне чисел, который можно записать в переменную. Также не используйте большие типы данных по типу long, если число маленькое, так как чем больше диапазон, тем больше памяти требуется компьютеру на конкретную переменную.
Числа с точкой
- float — для создания чисел с плавающей точкой. Диапазон чисел от от -3.4*10 38 до 3.4*10 38 ;
- double — для создания чисел с плавающей точкой. Диапазон чисел от от ±4.9*10 -324 до ±1.8*10 308 .
Прочие типы данных
- bool — логический тип данных. Предназначен для записи истинного (true) или ложного (false) значения;
- char — тип данных для работы с символами. Позволяет поместить в одинарных кавычках какой-либо символ.
Для создания переменной необходимо указать тип данных и назвать её. Также можно сразу же добавить к ней значение:
int a = 0; // Добавление значения сразу float c; // Создание переменной без значения short b, y = 342; // Создание нескольких переменных
Для вызова переменной вы можете обратиться к ней по имени.
Получение данных
Для получения данных от пользователя необходимо воспользоваться функцией scanf() :
scanf("%d", &some_value);
Таким образом введенные пользователем данные будут помещены в переменную с названием «some_value».
Весь код будет доступен после подписки на проект!
Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Как обозначить диапазон чисел в c
Есть диапазон из double чисел, пусть от 0.0 — 2.0, нужно привести его к другому диапазону от 0 до 100. Например, 0.0 из первого диапазона должен соответствовать числу 0 второго диапазона, число 1.0 должно соответствовать 50. Как это сделать?
Re: соответствие диапазона чисел
| От: | Vamp |
| Дата: | 30.08.10 17:58 |
| Оценка: |
L>Есть диапазон из double чисел, пусть от 0.0 — 2.0, нужно привести его к другому диапазону от 0 до 100. Например, 0.0 из первого диапазона должен соответствовать числу 0 второго диапазона, число 1.0 должно соответствовать 50. Как это сделать?
Я предлагаю составить пропорцию.
Да здравствует мыло душистое и веревка пушистая.
Re: соответствие диапазона чисел
| От: | SpaceConscience |
| Дата: | 30.08.10 18:16 |
| Оценка: |
А соответствие должно быть линейным?
Собрался ставить минус? Да сам иди в жопу!
Re: соответствие диапазона чисел
| От: | uzhas |
| Дата: | 30.08.10 18:45 |
| Оценка: |
Здравствуйте, Logot, Вы писали:
L>Привет всем
L>Есть диапазон из double чисел, пусть от 0.0 — 2.0, нужно привести его к другому диапазону от 0 до 100. Например, 0.0 из первого диапазона должен соответствовать числу 0 второго диапазона, число 1.0 должно соответствовать 50. Как это сделать?
попробуйте использовать линейное преобразование
f(x) = 50*x
Re[2]: соответствие диапазона чисел
| От: | rg45 |
| Дата: | 30.08.10 21:18 |
| Оценка: |
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, Logot, Вы писали:
L>>Привет всем
L>>Есть диапазон из double чисел, пусть от 0.0 — 2.0, нужно привести его к другому диапазону от 0 до 100. Например, 0.0 из первого диапазона должен соответствовать числу 0 второго диапазона, число 1.0 должно соответствовать 50. Как это сделать?
U>попробуйте использовать линейное преобразование
U>f(x) = 50*x
Или бесконечное множество кубических. Например, такое:
Так, как задан вопрос, можно придумать много разных преобразований
—
Не можешь достичь желаемого — пожелай достигнутого.
Re: соответствие диапазона чисел
| От: | SpaceConscience | |
| Дата: | 30.08.10 21:27 | |
| Оценка: | 6 (1) | |
L>Есть диапазон из double чисел, пусть от 0.0 — 2.0, нужно привести его к другому диапазону от 0 до 100. Например, 0.0 из первого диапазона должен соответствовать числу 0 второго диапазона, число 1.0 должно соответствовать 50. Как это сделать?
Помозговал тут, придумал решение:
int MapRange (double source) < if (source == 0.0) < return 0; > if (source == 1.0) < return 50; > if (source == 2.0) < return 100; > throw new ArgumentException(); >
Собрался ставить минус? Да сам иди в жопу!