> For the complete documentation index, see [llms.txt](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/7.-prostye-tipy-dannykh-znakovye-celye-bezznakovye-celye-veshestvennye-..md).

# 7. Простые типы данных (знаковые целые, беззнаковые целые, вещественные).

Назначение, относительный размер целых типов данных, занимаемая память, диапазон значений, допустимые операции. Приведение типов данных, его виды, когда происходит, примеры.​Тип данных

​

## Простые типы данных&#x20;

Любая переменная в Си имеет определенный тип данных. Этот тип определяет, какие значения может принимать переменная и сколько места в памяти она будет занимать. \
Базовые типы данных в Си представляют собой целые ( int , char ) и вещественные ( float , double ). Отдельно следует выделить тип void . К базовым типам данных можно применять модификаторы short и long для изменения занимаемой ими памяти и, соответственно, расширения диапазона значений.

## Знаковые целые <a href="#znakovye-celye" id="znakovye-celye"></a>

Старший бит в таких числах определяет знак числа: 0 — положительное, 1 — отрицательное

<figure><img src="https://3644367790-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUZOUsWlbTNqsUYoinAff%2Fuploads%2F6wxxPEewj9KlltcJ0cmu%2Fimage.png?alt=media&amp;token=7af6d875-5dbb-4f16-b5fb-5167e2114e28" alt=""><figcaption></figcaption></figure>

## Беззнаковые целые типы данных (неотрицательные): <a href="#bezznakovye-celye-tipy-dannykh-neotricatelnye" id="bezznakovye-celye-tipy-dannykh-neotricatelnye"></a>

<figure><img src="https://3644367790-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUZOUsWlbTNqsUYoinAff%2Fuploads%2FoCgmfVLHlcJVc1PAfIHQ%2Fimage.png?alt=media&amp;token=735e5401-e8d1-4deb-bc66-4766e826b3d9" alt=""><figcaption></figcaption></figure>

## Вещественные типы данных: <a href="#veshestvennye-tipy-dannykh" id="veshestvennye-tipy-dannykh"></a>

<figure><img src="https://3644367790-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUZOUsWlbTNqsUYoinAff%2Fuploads%2FiwoUEPgVlQLTafFNqM2v%2Fimage.png?alt=media&amp;token=3e9c36d7-af83-4924-8b95-dd35d45fb265" alt=""><figcaption></figcaption></figure>

Тип **void** не попадает под определение типа данных. Его используют только при возврате функции или при работе с указателями (void\* - универсальный (пустой) указатель, используется, когда тип переменной неизвестен)

## Относительный размер целых типов данных: <a href="#otnositelnyi-razmer-celykh-tipov-dannykh" id="otnositelnyi-razmer-celykh-tipov-dannykh"></a>

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)

## Операции <a href="#operacii" id="operacii"></a>

Различают унарные, бинарные и тернарные операторы.

* Арифметические операции: +, -, \*, /, %, +=, -=, \*=, /=, %=
* Операции сравнения: <, >, <=, >=, ==, !=
* Логические операции: &&, ||, !
* Побитовые операции: &, |, ^, &=, |=, ^=, \~
* Операции побитового сдвига: <<, >>, <<=, >>=
* Операции инкримент и декримент: ++, --
* Тернарный оператор ? :

Над вещественными данными недопустимы: %, побитовые, побитовый сдвиг, логические

## Приведение типов данных <a href="#privedenie-tipov-dannykh" id="privedenie-tipov-dannykh"></a>

Приведение типов данных - преобразование из одного типа данных в другой.

**Неявное приведение** происходит:

* В арифметических операциях, если один из операндов имеет один тип, а другой отличный.

```cpp
float a = 5.995;
int b = 5;
a = a + b; // b преобразуется в тип float
```

* При присвоении

```cpp
char c = 6;
int d = c; //c преобразуется в тип int
```

* При передаче в качестве аргумента функции
* При возвращении из функции

**Явное приведение** явно приводит тип переменной.

```cpp
double a = 5.252;
a = (int) a;
```
