Лекция №2 Введение в язык Си

advertisement
Лекция №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
Download