Унарные знаки операции
Понятие программы
Программа на языке Си – это последовательность препроцеcсорных директив, описаний и определений глобальных переменных и функций.
В программе должна быть определена одна функция с именем main(), которую называют главной функцией. Кроме этой функции в программе можно определить любое количество других функций. Определение функции состоит из заголовка и тела. Все переменные и другие объекты, которые определены вне функций, являются внешними, или глобальными.
1.2 Препроцессорные директивы
Директивы препроцессора – это записанные в тексте программы инструкции, которые начинаются с новой строки знаком #. Эти директивы дополняют исходный текст программы.
Директива #include включает в текст программы содержимое указанного файла. Эта директива имеет две формы записи:
#include "имя_файла"
#include <имя_файла>
Директива #define служит для замены идентификатора какой-либо ранее подготовленной последовательностью операторов или выражений. Синтаксис директивы #define такой:
#define идентификатор строка_замещения
Замену в тексте можно отменить с помощью директивы:
#undef идентификатор
Например:
#define W 80
#undef W
1.3 Компилятор и компоновщик
Компилятор преобразовывает текст программы с языка Си в объектный (машинный) код, т.е. в код, понятный для процессора, и выполняет синтаксическую проверку текста программы и выдает диагностические сообщения об ошибках. При этом формируется файл программы расширением obj, например, файл с именем first.obj.
Компоновщик подключает необходимые библиотечные функции, оформляет код программы в соответствии с операционной системой компьютера и формируетисполнимый файл программы, т.е. файл с именем first.exe. При этом, если какую-то функцию не удалось подключить к программе, компоновщик выдает диагностические сообщения.
1.4 Лексические основы языка Си
В алфавит языка С++ входят:
· прописные и строчные буквы латинского алфавита a…z, A…Z;
· цифры 0,1,2,3,4,5,6,7,8,9;
· специальные знаки " { } ( )& | + – * / % \ ; : ? <и т.д.
Лексема – это единица текста программы, которая имеет определенный смысл для компилятора и которая не может быть разбита в дальнейшем. Существуют следующие лексемы:
· идентификаторы – последовательность букв латинского алфавита, цифр и символов подчеркивания, начинающаяся не с цифры;
· константы – изображение фиксированного числового, символьного или строкового значения;
· ключевые (служебные) слова – идентификаторы, зарезервированные в языке для специального пользования;
· разделители – знаки пунктуации;
· знаки операций.
Пробел не является лексемой.
1.5 Знаки операций
С помощью знаков операции записываются вычисляемые выражения. Члены выражений называются операндами. К простейшим операндам относятся константы, идентификаторы и выражения, которые могут быть заключены в круглые скобки.
Знаки операции бывают унарные, которые работают с одним операндом, бинарные – с двумя операндами и одна операция трехарная(условная) – с тремя операндами.
Унарные знаки операции
· & – операция получения адреса; //int a=9; &a®адрес FF0B:001A
· ! – логическое отрицание, применяется к скалярным операндам, результат 1 (истина), если значение операнда 0 (ложь), результат 0 (ложь), если значение операнда не нуль (истина).
Например: !0®1, !(4>5)® 1, !(0<8)® 0,!5 ® 0;
· ++ (––) – инкремент (декремент) увеличение (уменьшение) операнда на единицу. Операнд – переменная.
Например: k1=7; k2=10; ++k1; k2--;получим k1=8 k2=9.
Имеются префиксная операция – увеличение (уменьшение) операнда до его использования, т.е. сначала к переменной прибавляется 1, а потом присваивается новое значение:
а=5; с=++а; получим а=а+1=6 с=а=6.
постпрефиксная – увеличение (уменьшение) операнда после его использования, т.е. сначала присваивается старое значение, а потом к переменной прибавляется 1:
b=5; d=b++; получим d=b=5 b=b+1=6.
· sizeof(…) – операция вычисления размера (в байтах) типа, который имеет операнд, разрешается два формата: sizeof(унарное выражение)иsizeof(тип).
Например: long x; sizeof(x) ® 4; sizeof(double) ® 8.
Дата добавления: 2016-04-11; просмотров: 968;