- •1.K&r c. Ansi c и iso c. Стандарт c99
- •Структура компилятора
- •3.Проблемы использования языка Си.
- •5.Числовые константы. Символические константы.
- •6.Идентификаторы. Константные переменные. Основные типы.
- •7.Указатели. Ссылки. Изменение типа данных.
- •8.Одномерные массивы. Символьные массивы.
- •9.Многомерные массивы.
- •10.Структуры.
- •11.Ключевое слово union.
- •12.Переименование типов (typedef).
- •13.Выражения.
- •14.Арифметические операции. Логические операции.
- •15.Операции присвоения.
- •16.Операции отношения. Адресные операции.
- •Адресные операции
- •17.Операции “?:”, sizeof, (тип)
- •18.Составной оператор. Оператор-выражение.
- •19.Условный оператор if. Оператор-переключатель switch. Условный оператор if
- •If (условие) оператор_1; else оператор_2;
- •If (условие) { оператор_1; оператор_2; … }
- •Оператор варианта switch
- •20.Операторы циклов while и do-while.
- •21.Оператор цикла for. Оператор продолжения continue.
- •22.Определение функции. Оператор возврата return. Вызов функции.
- •23.Функция main.
- •24.Поименованные константы и замена идентификаторов. Макросы.
- •If (выражение)
- •25.Включение файлов. Условная компиляция. Включение файла
- •26.Команда error. Команда pragma.
- •27.Обработка особых ситуаций. Обработка try, перехват catch, Спецификация особой ситуации throw.
- •28.Функции-подстановки (inline).
- •29.Операция создания объекта new. Операция delete. Операция new
- •Операция delete
- •30.Инкапсуляция. Наследование.
- •31.Полиморфизм.
- •32.Классы. Члены класса.
- •33.Конструктор. Деструктор. Функции-члены.
- •34.Операция доступа к области видимости “::”. Указатель this.
14.Арифметические операции. Логические операции.
15.Операции присвоения.
Операции присваивания: =, +=, -=, *= и т.д. Операции присваивания могут использоваться в программе как законченные операторы. Простое присваивание (=):
операнд_1 = операнд_2
Сначала вычисляется выражение, стоящее в правой части операции, а потом его результат записывается в область памяти, указанную в левой части Правило: «присваивание — передача данных "налево". То, что ранее хранилось в этой области памяти, естественно, теряется. Пример.
#include
1nt main(){
int a = 3, b = 5, с = 7;
a = b; b = a; с = с + 1;
cout << "a = " << a;
cout << "\t b = " << b;
cout << "\t с = " << c;
return 0;
}
Результат:
a = 5 b = 5 c = 8
В сложных операциях присваивания ( +=, *=, /= и т п.) при вычислении выражения, стоящего в правой части, используется значение из левой части. Например, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд, то есть выражение
а += b эквивалентно а = а + b
16.Операции отношения. Адресные операции.
Операции отношения (<. <=, >. >=. =. !=) сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результатом
операции является значение true или false (любое значение, не равное нулю, интерпретируется как true). Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения.
Адресные операции
&Операция получения адреса операнда.
Операндом может быть любое l-выражение. Операция возвращает адрес объекта или функции, на который ссылается операнд. Операция невыполнима по отношению к объектам, определённым со спецификатором register, поскольку существует вероятность того, что они не располагаются в памяти и не имеют определённого адреса.
*Операция обращения по адресу или операция косвенного обращения.
Операндом может быть выражение, значением которого является адрес. Операция косвенного обращения называется также операцией разыменования, поскольку позволяет обращаться к объекту не употребляя при этом имени объекта.
17.Операции “?:”, sizeof, (тип)
Условная операция (?:). Эта операция тернарная, то есть имеет три операнда.
Ее формат:
операндах ? операнд_2 : операндов Первый операнд может иметь арифметический тип или быть указателем. Он оценивается с точки зрения его эквивалентности нулю (операнд, равный нулю, рассматривается как false, не равный пулю — как true). Если результат вычисления операнда 1 равен true, то результатом условной операции будет значение второго
операнда, иначе — третьего операнда. Вычисляется всегда либо второй операнд,
либо третий. Их тип может различаться. Условная операция является сокращенной формой условного оператора if (он рассмотрен на с. 40).
#1nc1ude <stclio.h>
1nt main(){
int a = 11. b = 4. max;
max = (b > a)? b : a:
printfC"Наибольшее число: М". max):
return 0:
}
Результат работы программы:
Наибольшее число: 11
Другой пример применения условной операции. Требуется, чтобы некоторая целая величина увеличивалась на 1, если ее значение не превышает п, а иначе при
нимала значение 1:
1 = (1 < п) ? 1 + 1: 1:
Операция определения размера sizeof предназначена для вычисления размера
объекта или типа в байтах, и имеет две формы:
sizeof выражение
sizeof ( тип )
Пример:
#1nclude <iostream.h>
int ma1n(){
float X = 1;
cout « "sizeof (float) :" « sizeof (float):
cout « "\ns1zeof X :" « sizeof x;
cout « "\nsizeof (x + 1.0) :" « sizeof (x +1.0):
return 0:
}
Результат работы профаммы:
sizeof (float) : 4
sizeof X : 4
sizeof (X + 1.0) : 8
Последний результат связан с тем, что вещественные константы по умолчанию
имеют тип doubl е, к которому, как к более длинному, приводится тип переменной
X и всего выражения. Скобки необходимы для того чтобы выражение, стоящее в
них, вычислялось раньше операции приведения типа, имеющей больший при
оритет, чем сложение.
