Лекция №2 Введение в язык Си Алфавит • Прописные и строчные буквы латинского алфавита: A,B…Z, a,b…z • Цифры: 0,1,2…9 • Специальные символы: “,{ } | [ ] ( ) + - / % \ ; ‘ . : ? < = > _ ! & * #~^ • Неотображаемые символы (пробел, табуляция, переход на новую строку) Корректные комментарии: /* однострочный комментарий */ /* ********* Многострочный комментарий *************/ Некорректные комментарии: /* текст 1 /* текст 2 */ текст 3 */ Идентификаторы Идентификатор — это последовательность букв и цифр. Первым символом должна быть буква (знак подчеркивания _ считается буквой). Буквы нижнего и верхнего регистров 34610651 различаются. Различимая длина: 31 символ Примеры: size88, TIME, time, _MIN, first_name Служебные (ключевые) слова Спецификаторы типов: char, double, enum, float, int, long, short, struct, signed, union, unsigned, void, typedef. Квалификаторы типа: const, volatile. Классы памяти: auto, extern, register, static. Операторы: break, continue, do, for, goto, if, return, switch, while. Прочие: default, case, else, sizeof. Константы Константа представляет значение, которое не может быть изменено. Типы констант: • Символы • Константы перечисляемого типа • Вещественные числа • Целые числа • Нулевой указатель Символьные константы Печатные символы: 'A', 'b', '0', '+' Эскейп-последовательности: '\ooo', '\xhh', '\Xhh‘ Пример: \032, \xFF Управляющие символы '\n' '\t' '\r' '\\' '\'' '\"' Перевод строки Гориз.табуляция Возврат каретки Обр.косая черта Апостроф Кавычка '\0' '\a' '\b' '\f' '\v' '\?' Нулевой символ Сигнал-звонок “Backspace” Перевод страницы Верт.табуляция Знак вопроса Числовые константы Целочисленные константы Десятичные: 1 44 0 1024 Восьмеричные: 016 05 Шестнадцатеричные: 0x1f 0XFF Вещественные константы: 44. 3.14159 44e0 .31e-2 0.0 Константы перечислимого типа enum [<тип перечисления>] {<список именованных констант>}; enum – служебное слово, вводящее перечисление Тип перечисления (необязателен) – название перечисления Список именованных констант – разделенная запятыми последовательность идентификаторов Пример: enum {ONE=1, TWO, THREE}; enum DAY {SUNDAY, MONDAY, TUESDAY, …, SATURDAY}; enum BOOLEAN {NO, YES}; Строки, или строковые константы Строковая константа – последовательность символов, заключенная в двойные кавычки: Примеры "Образец строки" "\nТекст\nразместится\nна 3-х строках" "Шалтай-Болтай \ сидел на стене." = "Шалтай-Болтай сидел на стене." "Шалтай-Болтай " " свалился во сне." = "Шалтай-Болтай свалился во сне." Переменные Переменная – именованная ячейка памяти, значение которой может меняться во время выполнения программы. • Каждая переменная в программе должна быть определена (объявлена). • У каждой переменной задан тип. • Переменная может принимать значения только соответствующего типа. Определение переменных Простая форма объявления переменных: <тип> <переменная 1>[, <переменная 2>…<переменная N>]; Пример: float y; int a, var1, temp, i; Определение переменных с инициализацией: <тип> <переменная> = <начальное значение>; Пример: int var2 = 1234; Защита от изменения: const <тип> <переменная> = <начальное значение>; Базовые типы данных Базовые типы данных: char –– единичный байт (символ) int – целое число float – число с плавающей запятой одинарной точности double – число с плавающей запятой двойной точности Квалификаторы типов Размер: short (для типа int) – меньшая размерность long (для типов int и double)– большая размерность Знак: signed – знаковый тип unsigned – беззнаковый тип Размерность типов Тип Размер Диапазон значений char 1 -27…27-1 (-128…127) unsigned char 1 0…28-1 (0…255) short int 2 -32768…32767 unsigned short int 2 0…65535 int 2,4 -215…215-1, -231…231-1 unsigned int 2,4 0…216-1, 0…232-1 long 4 -231…231-1 unsigned long 4 0…232-1 Арифметические операции Бинарные: + сложение - вычитание * умножение / деление % получение остатка от деления Унарные: - унарный минус (смена знака) + унарный плюс ++ инкремент (увеличение на 1) -- декремент (уменьшение на 1) Операторы отношения и логические операторы Бинарные: > «больше» < «меньше» >= «больше или равно» <= «меньше или равно» && логическое «И» || логическое «ИЛИ» == сравнение на равенство != сравнение на неравенство Унарные: ! Логическое отрицание 3 < 5 равняется 1 3 == 5 равняется 0 3 && 5 равняется 1 3 > 5 равняется 0 3 !=5 равняется 1 !3 равняется 0 Поразрядные операторы Бинарные: & поразрядное «И» | поразрядное «ИЛИ» ^ поразрядное исключительное «ИЛИ» >> поразрядный сдвиг вправо << поразрядный сдвиг влево Унарные: ~ поразрядное отрицание 4 << 2 равняется 16 6 & 5 равняется 4 6 ^ 5 равняется 3 5 >> 1 равняется 2 6 | 5 равняется 7 ~3 равняется 252 для unsigned char, -4 для signed char Операторы присваивания = простое присваивание Присваивание с операцией: *= /= %= += -= <<= >>= &= |= ^= A += B равнозначно A = A + B Прочие операции (тип) преобразования типа [] доступ к элементу массива () скобки . (точка) прямой выбор компонента структурированного объекта -> косвенный выбор компонента структурированного объекта ?: условный оператор. Пример: a > b ? A : b , (запятая) группировка выражений * операция разыменования & операция получения адреса sizeof получения размера Приоритеты вычисления операторов Ранг Операторы 1 ( ) [ ] -> . 2 ! ~ ++ -- + - & * (тип) sizeof 3 */% 4 +- 5 >> << 6 < > <= >= 7 == != 8 & 9 ^ 10 | 11 && 12 || 13 ?: 14 = += -= *= /= %= &= ^= |= <<= >>= 15 , ассоциативность Выражения Выражение состоит из одного или нескольких операндов, символов операций и ограничителей. Назначение любого выражения – формирование некоторого значения. Примеры: a+b y=x*2 x++ k/3 a+b>c && a+c<b a = b = c = 0 Выражения Выражение Значение выражения 1/2 5.0 / 2 ++m --k i++ x+++b 0 2.5 m+1 k -1 i (x++)+b Арифметическое преобразование (приведение) типов Неявное преобразование: int a = 10; float b = a; /* преобразование при присваивании */ float b = a * 3.14; /* преобразование в арифм.выражении */ Явное преобразование int a = 10; char c = (int) (a * 32); long double double float unsigned long int long unsigned int