Переменные.
Операторы.
Стандартные библиотеки
Переменные.
Статические переменные.
Статические переменные, в отличие от
глобальных, неизвестны вне своих
функций или файла, и сохраняют свои
значения между вызовами.
Статические переменные.
Свойство статических переменных
полезно при создании обобщенных
функций и библиотек функций, которые
могут использоваться другими
программами.
Локальные статические
переменные.
Если локальная переменная объявлена
с помощью спецификатора static,
компилятор выделит для нее постоянное
Место хранения, как и для глобальной
переменной
Локальные статические
переменные.
Принципиальное отличие локальной
статической переменной от глобальной
состоит в том, что первая остается
доступной лишь внутри своего блока.
Локальные статические
переменные.
Примером удачного применения
статических переменных является
генератор чисел, который порождает
новое число, использую предыдущее
значение
Локальные статические
переменные.
Глобальные статические
переменные.
Применение спецификатора static к
глобальной переменной заставляет
компилятор создать глобальную
переменную, видимую только в
пределах текущего файла.
Глобальные статические
переменные.
Несмотря на то что эта переменная
остается глобальной, в других файлах
она не существует.
Следовательно, изменить ее значение
путем вмешательства извне невозможно.
Модификатор static
Модификатор static позволяет скрывать
часть программы от других модулей. Это
чрезвычайно важно при разработке
больших программ.
Модификатор static
В языке С++ эта особенность модификатора
static сохраняется, но объявлена
нежелательной. Это означает, что при
разработке новых программ использовать это
свойство не рекомендуется. Вместо него
следует применять пространства имен.
Операторы.
Операторы.
Арифметические (arithmetic)
Сравнения (relational)
Логические (logical)
Побитовые (bitwise)
Оператор присваивания
Оператор присваивания можно
использовать в любом корректном
выражении.
имя переменной = выражение
Оператор присваивания
Выражение может состоять как из
отдельной константы, так и комбинации
сложных операторов.
Преобразование типов в
операторе присваивания
Когда в выражении смешиваются
переменные разных типов, необходимо
выполнить преобразование типов
(type conversion).
Правила преобразования типов
Результирующий тип Тип выражения Возможные потери
signed char char
Если значение > 125, результатом будет
отрицательное число
char short int Старшие 8 бит
char int (16 bit) Старшие 8 бит
char int (32 bit) Старшие 24 бит
char long int Старшие 24 бит
short int int (16 bit) нет
short int int (32 bit) Старшие 16 бит
int (16 bit) long int Старшие 16 бит
int (32 bit) long int нет
int float Дробная часть и, возможно, что-то еще
float double Точность, результат округляется
double float Точность, результат округляется
Множественное присваивание
В языке С / С++ разрешается
присваивать одно и то же значение
нескольким переменным
одновременным.
x = y = z = 0;
Арифметические операторы
Оператор Действие
-
Вычитание, а также
унарный минус
+ Сложение
* Умножение
/ Деление
% Деление по модулю
-- Декрементация
++ Инкрементация
Арифметические операторы
Если оператор «/» применяется к целому
числу или символу, дробная часть
отбрасывается.
Например: 5 / 2 равно 2
Арифметические операторы
Оператор «%», как и в других языках
программирования, возвращает остаток
целочисленного деления. Однако этот
оператор нельзя применять к числам с
плавающей точкой.
Арифметические операторы
Унарный минус умножает свой операнд
на -1. Иными словами, унарный минус
меняет знак операнда на
противоположный
Инкрементация и декрементация
Оператор «++» добавляет 1 к своему
операнду, а оператор «--» вычитает ее.
x = x + 1; x++;
x = x - 1; x--;
Инкрементация и декрементация
Две формы записи:
Префиксная и постфиксная
++x; x++;
--x; x--;
Инкрементация и декрементация
Приоритеты арифметических
операций
Высший
++ --
- (унарный минус)
* / %
Низший
+ -
Операторы сравнения.
Логические операторы
В термине оператор сравнения слово
«сравнение» относится к значениям
операндов
В термине логический оператор слово
«логический» относится к способу,
Которым устанавливаются эти отношения
Операторы сравнения.
Логические операторы
Операторы сравнения
Оператор
Действие
> Больше
>= Больше или равно
< Меньше
<= Меньше или равно
!= Не равно
== Равно
Операторы сравнения.
Логические операторы
Логические операторы
Оператор
Действие
&& И
|| ИЛИ
! НЕ
Операторы сравнения.
Логические операторы
p q p && q p || q !p
0 0 0 0 1
0 1 0 1 1
1 1 1 1 0
1 0 0 1 0
Операторы сравнения.
Логические операторы
В одном и том же выражении можно
использовать несколько операторов
10 > 5 && !(10 < 9) || 3 <= 4
Операторы сравнения.
Логические операторы
Высший
!
> >= < <=
== !=
Низший
||
&&
Побитовые операторы
Побитовые операторы (bitwise operation)
предназначены для проверки, установки
и сдвига битов, из которых состоят байты
и машинные слова, образующие
переменные типа char или int.
Побитовые операторы
Побитовые операции нельзя применять
к переменным типа float, double,
long double, void, bool и других, более
сложных, типов.
Побитовые операторы применяются
к отдельным битам операндов
Побитовые операторы
Оператор Действие
& И
| ИЛИ
^ Исключающее ИЛИ
~ Дополнение до единицы (НЕ)
>> Сдвиг в право
<< Сдвиг влево
Побитовые операторы
Побитовые операции И, ИЛИ и
НЕ (дополнение до единицы)
описываются теми же таблицами
истинности, что и их логическими аналоги,
За исключением того, что теперь
все сравнения проводятся поразрядно
Статический оператор sizeof
Статический унарный оператор sizeof
вычисляет длину операнда в байтах.
Операндом может быть как отдельная
переменная, так и имя типа, заключенное
в скобки
Статический оператор sizeof
Операторы [] и ()
Круглые скобки – это оператор,
повышающий приоритет операций,
заключенных внутри.
Квадратные скобки используются для
индексации массива.
Приоритеты операторов
Высший () [] ->
! ~ ++ --+- (тип) * & sizeof
* / %
+ -
<< >>
< <= > >=
== !=
&
^
|
&&
||
Приоритеты операторов
Высший ?:
= + += -= *= /= и т.д.
Низший ,
Выражения
Выражения состоят из операторов,
констант, функций и переменных.
В С / С++ выражением считается
любая допустимая комбинация этих
элементов.
Порядок вычислений
Ни в языке С, ни в языке С++ порядок
вычисления подвыражений, входящих
в выражения, не определен. Компилятор
может сам переставлять выражения,
стремясь к созданию оптимального
объектного кода.
Составные операторы
присваивания
В языке С / С++ существуют составные
формы оператора присваивания,
представляющие собой комбинации
оператора присваивания и
Арифметических операторов.
Составные операторы
присваивания
x = x + 1; => x += 1;
x = x - 1; => x -= 1;
x = x * 2; => x *= 2;
x = x / 2; => x /= 2;
x = x % 2; => x %= 2;
Составные операторы
присваивания
x = x + 1; => x += 1;
Оператор «+=» сообщает компилятору,
что к старому значению переменной
х следует прибавить 1
Составные операторы
присваивания
Составные формы присваивания широко
используются в профессиональных
Программах на языке С / С++.
Часто их называют сокращенными
операторами присваивания
(short assignments), поскольку они более
лаконичны
Стандартные
библиотеки.
Стандартные библиотеки
Подключение осуществляется
включением в начало файла строки
#include <library.h>
Где library.h — соответствующая
библиотека.
Вывод и ввод и стандартные
функции
stdio.h Библиотека ввода-вывода.
stdlib.h
Собственно, стандартная библиотека Си.
Содержит очень много полезных функций.
Математическая библиотека и
спутники
math.h Математическая библиотека.
limits.h
Содержит платформо-зависимые
константы лимитов целых чисел. В
частности: INT_MAX, LONG_MAX и т.п.
float.h
Содержит платформо-зависимые
константы лимитов чисел с плавающей
точкой.
Работа с текстом
string.h Работа с Си-строками (массивами символов).
ctype.h Работа с символами (посимвольно).
wchar.h
Поддержка работы со строками в Unicode (UTF-16
или UTF-32 в зависимости от реализации).
wctype.h Работа с символами (посимвольно) для Unicode.
locale.h
Для поддержки локализации (национальных
особенностей) при работе с датами, стоками,
символами и т.п.
time.h
Функции по работе с датами и временем, в том
числе текущим.
Прочие библиотеки
assert.h
Определяет макрос assert, необходимый для
отладки программы.
errno.h
Определяет макрос errno, необходимый для
получения кода ошибки, произошедшей в
стандартной функции.
signal.h Установка обработчиков и вызов сигналов.
stdarg.h Поддержка работы функций с эллипсисом.
iso646.h
Для любителей писать and вместо && и or
вместо ||
Спасибо за
внимание J

Типы данных (продолжение). Операторы. Стандартные библиотеки