
- •Знаки операций
- •Литералы (константы)
- •Комментарии
- •Директивы препроцессора (основные).
- •Базовые типы данных.
- •Константы в программах на языке c.
- •Целочисленные константы
- •Константы вещественного типа
- •Символьные константы
- •Строковые константы
- •Функции вывода информации. Использование модификаторов и управляющих последовательностей.
- •Функции ввода информации.
- •Ввод-вывод потоками (cin, cout).
- •Синтаксис операторов языка c, операторы-выражения, управляющие операторы в языке с.
- •Арифметические операции, преобразование типов операндов арифметических операций. Операция "typedef".
- •Линейный алгоритм. Операции присваивания, разновидности сокращений записи операции присваивания.
- •Операции отношений (сравнения) и логические операции.
- •Логические операции
- •Операторы передачи управления goto, continue, break, return.
- •Ветвящийся алгоритм. Условный оператор if, условная операция «? :».
- •Оператор выбора альтернатив (переключатель) switch.
- •Операция "," (запятая).
- •Циклический алгоритм. Оператор с предусловием while. Понятие цикла
- •Оператор с предусловием while
- •Оператор цикла с постусловием do - while.
- •Оператор цикла с предусловием и коррекцией for.
- •Указатели как тип данных. Операции * и &. Операции над указателями.
- •Функции в с. Способы описания функции, операция вызова функции.
- •Особенности использования параметров функций.
- •Одномерные массивы.
Арифметические операции, преобразование типов операндов арифметических операций. Операция "typedef".
Арифметические операции - бинарные. Перечень арифметических операций и их обозначений:
+ - сложение;
- - вычитание (либо унарная операция - изменение знака);
/ - деление (для int операндов - с отбрасыванием остатка);
* - умножение;
% - остаток от деления целочисленных операндов со знаком первого операнда (деление по модулю).
Операндами традиционных арифметических операций (+ - * /) могут быть константы, переменные, идентификаторы функций, элементы массивов, указатели, любые арифметические выражения.
Порядок выполнения операций:
выражения в круглых скобках;
функции (стандартные математические, функции пользователя);
* / выполняются слева направо;
+ ─ слева направо.
Порядок выполнения операций можно определять круглыми скобками, тогда выражение в скобках выполняется в первую очередь (слева направо).
При выполнении операций могут встречаться операнды различных типов. В этом случае они преобразуются к общему типу в соответствии с небольшим набором правил.
Типы операндов преобразуются в порядке увеличения их "размера памяти", т.е. объема памяти, необходимого для хранения их значений. Поэтому можно говорить, что неявные преобразования всегда идут от "меньших" объектов к "большим". Схема выполнения преобразований операндов арифметических операций:
short, char int unsigned long double
float double
Горизонтальные стрелки отмечают преобразования даже однотипных операндов перед выполнением операции, т.е. действуют следующие правила:
- значения типов char и short всегда преобразуются в int;
если любой из операндов (a или b) имеет тип double, то второй преобразуется в double;
если один из операндов long, то другой преобразуется в long.
Внимание: результатом 1/3 будет «0», чтобы избежать такого рода ошибок необходимо явно изменять тип хотя бы одного операнда, т.е. записывать, например: 1. / 3.
Любому типу данных, как стандартному, так и определенному пользователем, можно задать новое имя с помощью операции typedef:
typedef <тип> <новое_имя>;
Введенный таким образом новый тип используется аналогично стандартным типам, например, введя пользовательские типы:
typedef unsigned int UINT;
typedef char M_s[100];
декларации идентификаторов введенных типов имеют вид:
UINT i, j; две переменные типа unsigned int
M_s str[10]; массив из 10 строк по 100 символов
Линейный алгоритм. Операции присваивания, разновидности сокращений записи операции присваивания.
Формат операции присваивания:
< ID > = <выражение>;
Присваивание значения в языке Cи, в отличие от традиционной интерпретации рассматривается как выражение, имеющее значение левого операнда после присваивания. Таким образом, присваивание может включать несколько операций присваивания, изменяя значения нескольких операндов. Например:
int i, j, k;
float x, y, z;
...
i = j = k = 0; k = 0; j = k; i = j;
x = i+(y = 3) - (z = 0); z = 0; y = 3; x = i + y - z;
Внимание, левым операндом операции присваивания может быть только именованная либо косвенно адресуемая указателем переменная. Примеры недопустимых выражений:
а) присваивание константе: 2 = x+y;
б) присваивание функции: getch() = i;
в) присваивание результату операции: (i+1) = 2+y;
В языке Cи допускается две разновидности сокращений записи операции присваивания:
a) вместо записи:
v = v @ e;
где @ - арифметическая операция либо операция над битовым представлением операндов, рекомендуется использовать запись
v @ = e;
например, i = i + 2; i + = 2;
б) вместо записи (автоувеличение):
x = x # 1;
где # - символ + либо -, обозначающий операцию инкремента либо декремента, x - целочисленная переменная, переменная-указатель), рекомендуется использовать запись
префиксная: ##x; постфиксная: x##;