Ключевые слова- это предопределенные идентификаторы, которые имеют специальное значение для компилятора Си. Их можно использовать только так как они определены. Имена объектов программы не могут совпадать с названиями ключевых слов.
Ключевые слова не могут быть переопределены. Тем не менее, они могут быть названы другим текстом, но тогда перед компиляцией они должны быть заменены посредством препроцессора на соответствующие ключевые слова.
Понятие lvalue и rvalue.
Для того, чтобы отличать выражения, обозначающие объекты, от выражений, обозначающих только значения были введены понятия lvalue и rvalue. Определение lvalue использовается для обозначения выражений, которые могли стоять слева от знака присваивания (left-value); им противопоставлялись выражения, которые могли находиться только справа от знака присваивания (right-value).
Характерные случаи использования lvalue и rvalue:
rvalue:
- Выражения, обозначающие временные объекты. В частности, результат вызова функций, возвращающих объекты не по ссылке; результат встроенных операций +, -. *, / и т.п.; явное создание временной переменной int() или C(); преобразования не к ссылочным типам и т.д.
- Результат встроенной операции взятия адреса (&) — rvalue типа указатель.
- Результат встроенных постфиксных операций ++, --.
- Литералы за исключением строковых.
- Константы перечислений.
lvalue:
- Выражения, непосредственно обозначающие объект, non-modifiable в случае const-квалификации. Например, имя переменной, параметра функции и т.п.
- Выражения ссылочных типов. non-modifiable в случае const-квалификации. В частности, результат вызова функций, возвращающих объекты по ссылке; выражения, состоящие из имен ссылочных переменных; операции преобразования к ссылочному типу и т.д.
- Результат встроенной операции разыменования (*) — lvalue указуемого типа; non-modifiable в случае const-квалификации.
- Результат встроенных префиксных операций ++, --.
- Имя функции — non-modifiable lvalue; может быть преобразовано к rvalue «указатель на функцию».
- Имя массива — non-modifiable lvalue; может быть преобразовано к rvalue «указатель на первый элемент массива».
- Строковые литералы — non-modifiable lvalue; может быть преобразовано к rvalue «указатель на char/wchar_t».
Типы данных.
Типы данных. В языке Си имеются два существенно различных типа данных: int- целый и float - вещественный(с плавающей точкой). Из них можно создавать еще два типа: char - символьный , double - вещественный с двойной точности.
Следует различать тип данных и модификатор типа.
Имеются следующие базовые типы:
- • char (символьный) – занимает 1 байт (8 бит) памяти
- • int (целый) – 2 байта
- • float (вещественный) – 4 байта
- • double (вещественный с двойной точностью) – 8 байт
- • void (пустой тип)
К модификаторам относятся:
- • unsigned (беззнаковый)
- • signed (знаковый)
- • short (короткий)
- • long (длинный)
Тип данных и модификатор типа определяют:
- - формат хранения данных в оперативной памяти (внутреннее представление данных)
- - диапазон значений в пределах которого может изменяться переменная
- - операции которые могут выполняться над данными соответствующего типа
Итак, к данным целого типа относятся следующие типы:
char, int, long int (2 байта), short int (4 байта). Модификаторы signed и unsigned могут предшествовать любому целому типу, но они не обязательны. Они указывают, как интерпретируется старший бит переменной. По умолчанию все переменные целого типа считаются signed, т.е. левый бит интерпретируется как знак.
К вещественным типам данных (с плавающей точкой) относятся:
float, double, long double (10 байт).
Функции
Функция - это самостоятельная единица программы, созданная для решения конкретной задачи. Функциями удобно пользоваться, например, если необходимо выполнить однотипные действия с одинаковым по типу набором данных.
Функции могут возвращать значение. Это значение может быть использовано далее в программе.
Использование функций позволяет:
- улучшить структуру текста программы;
- избежать дублирования кода.
Существует два типа функций:
Прямые (выполняют ряд действий и передают управление вызывающей функции);
( и ) ( или) if(year>14&&year<18) if(t>36.7|| t<36 || p>140)
3) Тернарный оператор
Тернарный оператор «?:» является сокращенной формой конструкции if…else. Он получил такое имя потому, что включает в себя три операнда. Оператор вычисляет условие и возвращает одно значение в случае, если условие верно, и другое значение, если условие неверно. Синтаксис оператора:
условие ? значение_истина : значение_ложь
Здесь условие — это выражение типа Boolean, значение_истина представляет собой значение, которое возвращается, если условие равно true, и значение_ложь возвращается в противном случае.
4) Оператор запятая “ , ” Группирует несколько выражений там, где компилятор ожидает одно.