В С++ используется статическая типизация, типы всех выражений известны на этапе компиляции.
-
int
- целое числоa.
short int
- минимум 16 битb.
long int
c.
long long int
-
char
- всегда 1 байт. По умолчанию может быть какsigned char
, так иunsigned char
. -
bool
- 1 байт.
Ключевое слово unsigned
делает знаковую переменную беззнаковой. При переполнении unsigned
происходит взятие остатка по модулю std::numeric_limits< unsigned type >::max() + 1
. На размеры типов установлены следующие ограничения: sizeof(short)
<= sizeof(int)
<= sizeof(long)
<= sizeof(long long)
.
Функция sizeof( type )
- возвращает размер типа в байтах. sizeof(char) == 1
Существует следующие целочисленные типы со строго заданным размером:
int16_t
- 16 бит (как и следует из названия)int32_t
int64_t
int_fast32_t
- целочисленное значение, гарантируется размер больше 32 бит, а из них наиболее быстро работающий на данной архитектуре.size_t
- целое беззнаковое число, размер задается так, чтобы в него помещался любой возможный индекс.
float
- 32 битаdouble
- 64 битаlong double
- 128 бит
Для работы со строками нужно подключить библиотеку string
.
Строка является просто последовательностью char
. В отличии от C строк, в C++ можно быстро получить длину строки с помощю str.length()
.
Для работы со векторами нужно подключить библиотеку vector
. Внутри <>
пишется тип элемента вектора. Объявлять вектор надо следующим образом:
std::vector<int> a;
Как пройти по всем элементам вектора (с помощью range-based for
):
std::vector<int> numbers = {1, 2, 3};
for (int number : numbers) {
std::cout << number << std::endl;
}
По возможности стоит избегать такого итерирования:
std::vector<int> numbers = {1, 2, 3};
for (size_t i = 0; i < numbers.size(); ++i) { // Менее читабельная запись, лучше избегать
std::cout << numbers[i] << std::endl;
}