# Логические Операции

{% hint style="info" %}
Логические операции возвращают всегда тип данных <mark style="color:blue;">**bool**</mark>

**0 -&#x20;**<mark style="color:red;">**False**</mark>

**1 -&#x20;**<mark style="color:green;">**True**</mark>\
Все числа кроме 0 это значение True
{% endhint %}

### Операторы Отношений: > < ==

|            Оператор сравнения           |       Пример      |     Пояснение    |
| :-------------------------------------: | :---------------: | :--------------: |
|  <mark style="color:blue;">**<**</mark> |  `cout << a < b;` |      Меньше      |
| <mark style="color:blue;">**<=**</mark> | `cout << a <= b;` | Меньше или Равно |

|            Оператор сравнения           |       Пример      |     Пояснение    |
| :-------------------------------------: | :---------------: | :--------------: |
|  <mark style="color:blue;">**>**</mark> |  `cout << a > b;` |      Больше      |
| <mark style="color:blue;">**>=**</mark> | `cout << a >= b;` | Больше или Равно |

|            Оператор равенства           |       Пример      | Пояснение |
| :-------------------------------------: | :---------------: | :-------: |
| <mark style="color:blue;">**==**</mark> | `cout << a == b;` |   Равно   |
| <mark style="color:blue;">**!=**</mark> | `cout << a != b;` |  Не равно |

#### Пример использования Операторов Отношений:

```cpp
cout << 100 > 50;  // 100 больше 50
```

{% hint style="success" %}
1\
\- <mark style="color:green;">**True**</mark>
{% endhint %}

***

```cpp
cout << 2 > 3;  // 2 больше чем 3
```

{% hint style="success" %}
0

&#x20;\- <mark style="color:red;">**False**</mark>
{% endhint %}

### <mark style="color:red;">**!**</mark> - Знак инверсии

Инверсия меняет значение на противоположное&#x20;

```cpp
cout << !(4 > 5) << endl;  
```

{% hint style="success" %}
**1**&#x20;

**-&#x20;**<mark style="color:green;">**True**</mark>&#x20;

изначально код должен выводить значение False т.к 4 < 5, но из за знака инверсии (<mark style="color:blue;">**!**</mark>) наше значение меняется на противоположное.
{% endhint %}

### Логические Операторы: && || !

<table><thead><tr><th width="153" align="center">Оператор</th><th width="439" align="center">Пример</th><th align="center">Пояснение</th></tr></thead><tbody><tr><td align="center">&#x26;&#x26;</td><td align="center"><code>cout &#x3C;&#x3C; ((5 == 5) &#x26;&#x26; (3 == 3));</code></td><td align="center">И</td></tr><tr><td align="center">||</td><td align="center"><code>cout &#x3C;&#x3C; ((5 == 1) || (3 == 3));</code></td><td align="center">ИЛИ</td></tr><tr><td align="center">!</td><td align="center"><code>cout &#x3C;&#x3C; (5 != 4);</code></td><td align="center">НЕ</td></tr></tbody></table>

#### Пример использования Логических Операторов:

```cpp
cout << ((5 == 5) && (3 == 3)); // 5 равно 5 И 3 равно 3
```

{% hint style="success" %}
1\
\- <mark style="color:green;">**True**</mark>
{% endhint %}

***

```cpp
cout << ((5 == 1) || (3 == 3)); // 5 равно 1 ИЛИ 3 равно 3
```

{% hint style="success" %}
1\
\- <mark style="color:green;">**True**</mark>\
Оператор || выводит то, что это выражение истинное даже с условием того, что одно из выражений ложное.
{% endhint %}
