# Занятие 2. Типы данных. Операции и выражения.
###### tags: `Programming C/Asm`

## Имена переменных
Для имён переменных есть одно правило, которое надо будет запомнить. В качестве имени переменной может выступать любая последовательность символов латинского алфавита, цифр и знака нижнего подчеркивания "_", которая начинается с буквы. Также нельзя использовать зарезервированные имена: `int`, `if`, `else`, `for`, `while` и т.д.

## Типы данных и их размеры.
Стандартные заголовочные файлы `<limits.h>` и `<float.h>` содержат символические константы для всех этих размеров а также других свойств системы и компилятора.
#### Задание 1.
Напишите программу определения диапазонов переменных типов (`char`, `short`, `int` и `long`) из заголовочных файлов.
> Подсказка: нужно залезть в `limits`
по адресу: `/usr/include/limits.h`

## Решение

## Операции
Операции можно разделить на несколько категорий:
- Арифметические: `+, -, *, /` и взятие остатка от деления `(%)`
- Операции отношения и логические. `> , >=, <=` - данные операции имеют одинаковый приоритет, сразу после них по уровню приоритета следуют `==`, `!=`. Одноместная операция отрицания (!).
- Инкрементирования и декрементирования. Например `i++`, `++i`.
- Поразрядные операции: `&` - поразрядное И, `|` - поразрядное включающее ИЛИ, ^ - поразрядное исключающее ИЛИ, `<<` - сдвиг влево, `>>` - сдвиг вправо
#### Задание 2.
Написать программу, которая получает на вход год и на выходе пишет високосный он или нет.
#### Задание 3.
Написать программу, которая:
Запрашивает у пользователя число типа `unsigned int`
Выводит двоичную запись этого числа с инвертированным порядком бит

## Решения

## Вывод
- Разобрали имена переменных
- Типы данных и их размеры
- Операции и выражения

## Домашнее задание
Написать программы которые:
1. Запрашивает у пользователя 10 чисел типа `int` и заносит их в массив, выводит количество отрицательных и неотрицательных чисел в нем
2. Преобразует буквы в верхнем регистре к нижнему и наоборот, при помощи условного оператора `if`.
> Усложнение: на вход не одна буква, а строка
3. Вычисляет и выводит первые 10 элементов последовательности определяемой по закону
`f(+2) = f(0"15-f(i+1)*7.f(0) = 1.f(1) = 2`
4. Запрашивает у пользователя число типа int и выводит наименьшую цифру этого числа и сколько раз она встречается в нем
