Программой на Си является набор определений отдельных функций, описания, директивы препроцессора.
Связь между функциями осуществляется через параметры и возвращаемые функциями значениями.
Каждая функция имеет вид:
<определние функции>::=<заголовок><тело функции>
<заголовок>::=<тип возвращаемого значения><имя функции>[(<список параметров>)]<тело функции>
<тело функции - блок>::={[<описание переменных>][<операторы>]}
Каждая программа обязательно должна включать единственную функцию с именем main (главная функция), которая выполняется первой.
директива препроцессора начинается со знака решетки, их основное назначение - подключение заголовочных файлов.
# include <имя файла>.
Таким образом шаблон имени файла программы имеет следующий вид
<директивы>
<описания>
<прототипы функций>
<описания функций-подпрограмм>
Переменная - зарезервированная область памяти из определенного количества байтов
количество байтов для их внутреннего представления, диапазон их значений и множество допустимых операций определяется типом.
У этой области есть свой адрес – указатель на эту область памяти. Число байтов памяти, отведенных для хранения переменной определяется ее типом в эту область можно записать значения, прочитать и изменить значения. С этой областью памяти связан и идентификатор.
Основные характеристики переменных: тип (количество байтов памяти), имя, значение, адрес области памяти.
Имена переменных - идентификаторы - должны начинаться с буквы или символа подчеркивания; следующие символы - только буквы, цифры и символы подчеркивания.
Регистры букв различаются, ключевые слова не могут быть идентификаторами.
Описание состоит из идентификатора и следующего за ним списка переменных, имеющих этот тип.
Каждое описание заканчивается точкой с запятой - таким образом описание переменных имеет вид:
[класс памяти][const]<тип><список переменных>;
список переменных - идентификаторы переменных одного типа.
переменные можно инициализировать.
Область действия переменных определяется в зависимости от их описания.
Область действия - часть программы, где переменная может быть использована, доступна, видима.
Переменные, объявленные внутри функции называются локальными или автоматическими.
Переменные, объявленные вне всех функций называются глобальными.
Количество байт памяти, выделяемое компилятором под переменные определяется функцией sizeof(<тип>), возвращающее значение, равное количеству байт в памяти.
Арифметические операции и выражения
Допустимые арифметические операции для числовых переменных - бинарные арифметические операции, унарные операции + - * /
При делении дробная часть отбрасывается, кроме того используется операция деления по модулю % - дает остаток от деления, применяется только к целым переменным.
Операция увеличения и уменьшения значений целых переменных ++, --
Операция (++j) увеличивает переменную j до использования ее значения
Операция (j++) увеличивает переменную после того, как ее значение было использовано.
Понятно, что операция увеличения и уменьшения можно применять только к целым переменным.
Арифметические операции бывают мультипликативные * / %, аддитивные + -
Операция присваивания
<L-значение> = <R-значение>;
L значение должно ссылаться на объект с соответствующим значением - то есть это ссылка на некоторую область памяти, а R-значение - любое выражение имеющее значение
Вычисляемое выражение и его значение записываются в область памяти на которую ссылается L-значение.
Старое значение стирается.
В область памяти константы ничего записать нельзя, поэтому она не является L-значением. Переменная является.
В языке Си присваивание является _____, поэтому можно записать c = f = b
<переменная>=<переменная><операция><модификатор>;
где в общем случае под знаком операция рассматривается любая арифметическая операция; используется для изменения значений переменной, то есть из области памяти выбирается значение, модифицируется и далее записывается в ту же область памяти.
При этом прежнее значение стирается.___ используется для вычисления сумм произведений накоплений счетчика.
Для записи таких выражений в СИ++ используется сокращенные операторы присваивания типа:
+=, -=, *=, /=, %=, что позволяет свести символическую запись выражения к более короткой записи <переменная><операция>=<модификатор>;
n += 2;
____ используются для вычисления выражений определенного типа и включают в себя операнды: константы, переменные, стандартные функции, объединенные знаком операции и скобок, которые выполняются в соответствии со своим приоритетом.
Элементы характеризуются своим значением и принадлежат к определенному типу данных.
Частным случаем выражения может быть одиночный элемент то есть константа
значение такого выражения имеет тот же тип, что и сам элемент.
Переменные, входящие в выражение должны получать свое значение до вхождения в выражение.
Выражение фактически представляет собой правило получения новых значений.
Выражение состоит из операндов, которые также могут являться выражениями, и знаков операций. А тип его значения определяется типом операндов и видом примененных к ним операций.
Правила использования операций с операндами различного типа:
При вычислении выполняется преобразование типов более коротких в более длинные, то есть тип выражения определяется наиболее высоким типом входящих в него переменных.
Функцию можно рассматривать как простую переменную и использовать на ее месте учитывая ее тип.
Арифметические выражения - это константы, переменные и функции, объединенные знаками арифметических операций.