Long int си: С | Типы данных

Digital Chip

Все данные в языке Си имеют свой тип. Переменные определенных типов занимают в памяти какое-то место, разное в зависимости от типа. В Си нет четкого закрепления количества памяти за определенными типами. Это отдано на реализацию конкретного компилятора под конкретную платформу. Например, переменная типа int в одном компиляторе может занимать в памяти 16 бит, в другом — 32 бита, в третьем — 8 бит. Все определяет конкретный компилятор. Правда, все стремятся к универсализации, и в основном в большинстве компиляторов тип int, например, занимает 2 байта, а тип char — один.

Я в последнее время немного затупил, не мог вспомнить, сколько байт занимает тип double в AVR-GCC. Обычно при программировании контроллеров работаешь с целочисленными типами, типа int и char, а к типам с плавающей точкой прибегаешь не часто, в связи с их ресурсоемкостью.

Поэтому, на будущее, оставлю себе здесь памятку с указанием размеров занимаемой памяти типами данных для компилятора AVR-GCC и диапазон изменения переменных этого типа.

Типы данных в языке Си для компилятора AVR-GCC

ТипРазмер в
байтах (битах)
Интервал изменения
char1 (8)-128 .. 127
unsigned char1 (8)0 .. 255
signed char1 (8)-128 .. 127
int2 (16)-32768 .. 32767
unsigned int2 (16)0 .. 65535
signed int2 (16)-32768 .. 32767
short int2 (16)-32768 .. 32767
unsigned short int2 (16)0 .. 65535
signed short int2 (16)-32768 . . 32767
long int
4 (32)-2147483648 .. 2147483647
unsigned long int4 (32)0 .. 4294967295
signed long int4 (32)-2147483648 .. 2147483647
float4 (32)3.4Е-38 .. 3.4Е+38
double4 (32)3.4Е-38 .. 3.4Е+38
long double10 (80)3.4Е-4932 .. 3.4Е+4932

[stextbox id=»warning» caption=»Обратите внимание»]Реализация типа double в AVR-GCC отступает от стандарта. По стандарту double занимает 64 бита. В AVR-GCC переменная этого типа занимает 32 бита, и соответственно, она эквивалентна переменной с типом float![/stextbox]

В дополнение к этому, в библиотеках AVR-GCC введено несколько производных от стандартных типов.

Они описаны в файле stdint.h. Сделано это, наверно, для улучшения наглядности и уменьшения текста программ (ускорения их написания :)). Вот табличка соответствия:

Производные типы от стандартных в языке Си для компилятора AVR-GCC

Производный типСтандартный тип
int8_tsigned char
uint8_tunsigned char
int16_tsigned int
uint16_tunsigned int
int32_tsigned long int
uint32_tunsigned long int
int64_tsigned long long int
uint64_tunsigned long long int

Тип Void

В языке Си есть еще один тип — тип void. Void используется для указания, что функция не возвращает ничего в качестве результата, или не принимает на вход никаких параметров. Этот тип не применяется для объявления переменных, соответственно он не занимает места в памяти.

какие существуют int, float, char, double, wchar_t, bool и void, как определить, таблица

В этом руководстве мы узнаем об основных типах данных, таких как int, float, char и т.д. в программировании на C++, с помощью примеров.

Что такое типы данных в C++?

Типа данных в C++ – это объявления переменных. Они определяют тип и размер данных, связанных с переменными. Например:

int age = 13;

Здесь age – переменная типа int, это означает, что переменная может хранить только целые числа размером 2 или 4 байта.

Основные типы данных

В таблице ниже показаны основные типы данных в C++, их значение и размеры (в байтах):

Тип данныхЗначениеРазмер (в байтах)
intЦелое число2 или 4
floatПлавающая точка4
doubleДвойная плавающая точка8
charсимвол1
wchar_tШирокий характер2
boolБулево1
voidПустой

Теперь давайте обсудим эти фундаментальные типы данных более подробно.

12

3. char

  • Ключевое слово char используется для символов.
  • Его размер составляет 1 байт.
  • В C++ символы заключаются в одинарные кавычки ”.
  • Например:
char test = 'h';

Примечание. В С++ целочисленное значение хранится в переменной типа char, а не в самом символе.

4. wchar_t

  • Широкий символ wchar_t похож на тип данных char, за исключением того, что его размер составляет 2 байта вместо 1.
  • Он используется для представления символов, для использования которых требуется больше памяти, чем для одного символа.
  • Например:
wchar_t test = L'ם'  // storing Hebrew character;


Обратите внимание на букву L перед кавычками.

Примечание. В C++ 11 также представлены два других типа символов фиксированного размера – char16_t и char32_t.

5. bool

  • Тип данных bool имеет одно из двух возможных значений: true или false.
  • Логические значения используются в условных операторах и циклах.
  • Например:
bool cond = false;

6. void

  • Ключевое слово void указывает на отсутствие данных. Это означает «ничего» или «не имеет значения».
  • Мы будем использовать void, когда узнаем о функциях и указателях.

Примечание. Мы не можем объявлять переменные типа void.

Модификаторы типа

Мы можем дополнительно изменить некоторые из основных типов данных с помощью модификаторов типов. В C++ есть 4 модификатора типа:

  • signed;
  • unsigned;
  • short;
  • long.

Мы можем изменить следующие типы данных с помощью вышеуказанных модификаторов:

  • int;
  • double;
  • char.

Список измененных типов данных

Тип данныхРазмер (в байтах)Значение
signed int4используется для целых чисел (эквивалентно int)
unsigned int4может хранить только положительные целые числа
short2используется для небольших целых чисел (от -32768 до 32767)
longне менее 4используется для больших целых чисел (эквивалент long int)
unsigned long4используется для больших положительных целых чисел или 0 (эквивалент unsigned long int)
long long8используется для очень больших целых чисел (эквивалент long long int)
unsigned long long8используется для очень больших положительных целых чисел или 0 (эквивалент unsigned long long int)
long double12используется для больших чисел с плавающей запятой
signed char1используется для символов (гарантированный диапазон от -127 до 127)
unsigned char1используется для символов (от 0 до 255)

Посмотрим на несколько примеров.

long b = 4523232;
long int c = 2345342;
long double d = 233434.56343;
short d = 3434233; // Error! out of range
unsigned int a = -5;    // Error! can only store positive numbers or 0

Производные типы данных

Типы данных, производные от основных типов данных, являются производными типами. Например: массивы, указатели, типы функций, структуры и т.д.

Типы данных Java

❮ Предыдущий Далее ❯


Типы данных Java

Как объяснялось в предыдущей главе, переменная в Java должна иметь указанный тип данных:

Пример

 int myNum = 5; // Целое число (целое число)
поплавок myFloatNum = 5,99f; // число с плавающей запятой
символ myLetter = 'D'; // Персонаж
логический myBool = истина; // логическое значение
Строка myText = "Привет"; // Нить
 

Попробуй сам »

Типы данных делятся на две группы:

  • Примитивные типы данных — включает byte , short , int , long , float , double , boolean и char
  • Непримитивные типы данных, такие как String , Массивы и классы (вы узнаете о них больше в следующей главе)

Примитивные типы данных

Примитивный тип данных определяет размер и тип значений переменных и не имеет дополнительные методы.

В Java существует восемь примитивных типов данных:

Тип данных Размер Описание
байт 1 байт Сохраняет целые числа от -128 до 127
короткий 2 байта Сохраняет целые числа от -32 768 до 32 767
ряд 4 байта Сохраняет целые числа от -2 147 483 648 до 2 147 483 647
длинный 8 байт Сохраняет целые числа от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
поплавок 4 байта Сохраняет дробные числа. Достаточно для хранение от 6 до 7 десятичных цифр
двойной 8 байт Сохраняет дробные числа. Достаточно для хранение 15 десятичных цифр
логическое значение 1 бит Сохраняет истинные или ложные значения
символ 2 байта Сохраняет один символ/букву или значения ASCII

Проверьте себя с помощью упражнений

Упражнение:

Добавьте правильный тип данных для следующих переменных:

 моеЧисло = 9;
 myFloatNum = 8,99f;
 мояПисьмо = 'А';
 myBool = ложь;
 myText = "Привет, мир";
 

Начать упражнение


❮ Предыдущий Следующий ❯


ВЫБОР ЦВЕТА



Лучшие учебники
Учебное пособие по HTML
Учебное пособие по CSS
Учебное пособие по JavaScript
Учебное пособие
Учебное пособие по SQL
Учебное пособие по Python
Учебное пособие по W3. CSS
Учебное пособие по Bootstrap
Учебное пособие по PHP
Учебное пособие по Java
Учебное пособие по C++
Учебное пособие по jQuery
Справочные материалы
Top

Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular

Справочник по jQuery

Основные примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery

FORUM | О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.

Copyright 1999-2022 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.

Каковы критерии выбора между типами данных short / int / long?, C++ FAQ

Другие сопутствующие вопросы: если короткое целое имеет тот же размер, что и int в моей конкретной реализации, зачем выбирать тот или иной? Если Я начинаю учитывать фактический размер переменных в байтах, не так ли? сделать мой код непереносимым (поскольку размер в байтах может отличаться от реализация за реализацией)? Или я должен просто пойти с размерами много больше, чем мне на самом деле нужно, как своего рода буфер безопасности?

Ответ: Обычно рекомендуется писать код, который можно портировать на другая операционная система и/или компилятор. Ведь если ты успешен в том, что вы делаете, кто-то другой может захотеть использовать его где-то еще. Это может быть немного сложнее со встроенными типами, такими как int и short, так как С++ не дает гарантированных размеров. Однако C++ дает вам две вещи, которые может помочь: гарантировано минимальные размеры , и это, как правило, все, что вам нужно нужно знать, и стандартный заголовок C, который предоставляет typedefs для размерных целые числа.

C++ гарантирует, что char состоит ровно из одного байта который составляет не менее 8 бит, short — не менее 16 бит, int — в не менее 16 бит, а long не менее 32 бит. Это также гарантирует неподписанная версия каждого из них имеет тот же размер, что и оригинал, например, sizeof(unsigned short) == sizeof(short).

При написании переносимого кода не следует делать дополнительных предположений о эти размеры. Например, не предполагайте, что int имеет 32 бита. Если у вас есть целочисленная переменная, которая требует не менее 32 бит, используйте длинное или unsigned long, даже если sizeof(int) == 4 на вашем конкретном реализация. С другой стороны, если у вас есть целая переменная величина который всегда будет соответствовать 16 битам и , если вы хотите свести к минимуму использование памяти данных, используйте короткое или беззнаковое короткое замыкание, даже если вы узнайте sizeof(int) == 2 в вашей конкретной реализации.

Другим вариантом является использование следующего стандартного заголовка C (который может или может не предоставляется вашим поставщиком компилятора C++):

#include  /*  не является частью стандарта C++  */
 

Этот заголовок определяет определения типов для таких вещей, как

int32_t

и

uint16_t

, которые представляют собой 32-разрядное целое число со знаком и 16-разрядное число без знака. целое число соответственно. Там же есть и другие вкусности. Мой рекомендуется использовать эти целочисленные типы «размера» только там, где они на самом деле нужны. Некоторые люди поклоняются последовательности, и они очень искушение использовать эти целые числа везде просто потому что они нужны были где-то . Консистенция хорошая, но не та величайшее благо, и использование этих typedef везде может вызвать некоторые головные боли и даже возможные проблемы с производительностью. Лучше руководствоваться здравым смыслом, который часто приводит к использованию обычных ключевых слов, например,

int

,

unsigned

, и т. д., где вы можете, и использовать целые типы с явным размером, например,

int32_t

и т. д. где нужно.

Обратите внимание, что здесь есть некоторые тонкие компромиссы. В некоторых случаях ваш компьютер может быть в состоянии манипулировать меньшими вещами быстрее, чем большими, но в в других случаях все с точностью до наоборот: арифметика int может быть быстрее, чем краткая арифметика по некоторым реализациям. Другим компромиссом является пространство данных против кодового пространства: арифметика int может генерировать меньше двоичного кода, чем краткая арифметика по некоторым реализациям. Не упрощайте предположения. Просто потому, что определенная переменная можно объявить как short не обязательно означает, что должно быть , даже если вы пытаетесь сэкономить место.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *