Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции КПиЯП.docx
Скачиваний:
50
Добавлен:
20.09.2019
Размер:
3.8 Mб
Скачать

Лекция 4 Выражения. Классификация операторов

Оператор — это конструкция языка Си, которая вызывает выполнение действия. Все операторы языке С можно разделить на четыре группы:

  1. Операторы объявлений типов и переменных;

  2. Операторы присвоений, математических и логических операций;

  3. Операторы вызова функций;

  4. Операторы управления.

Операторы объявлений типов и переменных

Оператор объявления типа предназначен для создания новых типов и имеет следующий синтаксис:

typedef спецификатор_типа идентификатор;

Примеры:

typedef unsigned int word;

typedef unsigned char byte;

Идентификатор выступает в качестве имени нового типа. Идентификатором может быть любая совокупность букв латинского алфавита (чувствительно к регистру), цифр и знака подчеркивания, удовлетворяющая следующим условиям:

  • не является зарезервированным словом языка «С» и ранее употребляющимся сочетанием символов;

  • начинается либо с буквы, либо со знака подчеркивания.

Операторы объявлений типов располагаются после раздела подключения библиотек и перед функцией main.

Оператор объявления переменных предназначен для создания переменных и имеет следующий синтаксис:

спецификатор_типа идентификатор1, идентификатор2,…,идентификаторN;

Идентификаторы здесь играют роль имени переменной. Требования к ним приведены выше.

Компилятор языка «С», как правило, не выполняет предварительной инициализации переменной. При запуске программы все переменные содержат мусор. Для избежания этого следует использовать инициализацию переменных:

спецификатор_типа идентификатор=значение;

Помимо переменных в языке «С» можно создавать и константы:

const спецификатор_типа идентификатор = значение;

Операторы объявлений переменных и типов могут располагаться либо перед функцией main, либо внутри нее. В последнем случае все операторы объявлений должны быть расположены в начале программы (до операторов другого типа).

Операторы вызова функций

Операторы вызова функций имеют следующий синтаксис:

функция(параметры);

В качестве примера рассмотрим две функции базового I\O из библиотеки stdio.h: scanf и printf.

Функция scanf предназначена для форматного ввода данных и имеет следующий заголовок:

int scanf(const char *format [,addresses,…]);

Первым параметром функции является строка формата ввода (строки в «С» заключаются в двойные кавычки). В данной строке содержится перечень спецификаторов типов данных, ввод которых ожидается, в определенном порядке. Далее указываются адреса, по которым будут располагаться вводимые данные. Например, имеется две переменные целого типа и переменная вещественного типа. Необходимо организовать их ввод.

scanf(“%d %d %lf”,&a,&b,&x);

В данном примере сначала вводятся два значения целого типа в переменные a и b, а затем вещественного типа в переменную x. %d указывает на то, что вводимые данные являются целыми числами, %lf – вещественным типа double.

Сочетание %d или любое другое называется спецификатором типа. В общем случае он имеет следующий формат:

% [*] [WIDTH] [F|N] [h|l|L] символ_типа

* - указывает запрещенные для ввода символы.

WIDTH – задает максимальную длину поля ввода.

F и N – преобразователи типа адресных аргументов к длинному и ближнему указателю.

L, l и h – преобразователи типа. Символ h служит для преобразования к типу short int. Символ l служит для преобразования к типу long int всех целочисленных типов и к типу double всех вещественных типов. Символ L служит для приведения к типу long double всех вещественных типов.

В таблице приведен перечень типов и соответствующие им спецификаторы:

Символ

Тип

Параметр

Численные

d

Десятичное целое

int *

D

Десятичное целое

long *

e, E

Вещественное число

float *

f

Вещественное число

float *

g, G

Вещественное число

float *

o

Восьмеричное целое

int *

O

Восьмеричное целое

long *

i

Десятичное, восьмеричное или шестнадцатеричное целое

int *

I

Десятичное, восьмеричное или шестнадцатеричное целое

int *

u

Незнаковое целое

unsigned *

U

Незнаковое целое

unsigned long *

x

Шестнадцатеричное целое

int *

X

Шестнадцатеричное целое

int *

Символьные

s

Строка символов

char *

c

Символ

char *

Указатели

p

Шестнадцатеричная форма

Указатель на объект

Функция printf предназначена для форматного ввода данных и имеет следующий заголовок:

int printf(const char *format [,variables,…]);

Первым параметром функции является строка формата ввода (строки в «С» заключаются в двойные кавычки). В данной строке содержится перечень спецификаторов типов данных, вывод которых ожидается, в определенном порядке. Далее указываются переменные, значения которых будут выводится. Например, имеется две переменные целого типа и переменная вещественного типа. Необходимо организовать их вывод.

printf(“%d %d %5.2lf”,a,b,x);

В данном примере сначала выводятся два значения целого типа в переменные a и b, а затем вещественного типа в переменную x. %d указывает на то, что выводимые данные являются целыми числами, %lf – вещественным типа double.

Сочетание %d или любое другое называется спецификатором типа. В общем случае он имеет следующий формат:

% [flag] [WIDTH][.PREC] [F,N,h,l,L] символ_типа

flag – для чисел указывает на необходимость вывода знака «+» для положительных чисел, для строк управляет форматированием – по левому или по правому краю.

WIDTH – задает длину поля.

.PREC – задает количество символов после запятой для вещественных чисел и минимальное количество знаков для целых чисел.

F, N – то же, что и для scanf.

h – преобразование к типу short int,

l – преобразование к типу long int,

L – преобразование к типу long double.

В таблице приведен перечень типов и соответствующие им спецификаторы:

Символ

Тип

Параметр

Численные

d

Целое

Знаковое десятичное целое

i

Целое

Знаковое десятичное целое

o

Целое

Незнаковое восьмеричное целое

u

Целое

Незнаковое десятинное целое

x

Целое

Незнаковое шестнадцатеричное целое

X

Целое

Незнаковое шестнадцатеричное целое

f

Вещественное

Вещественное число в обычной форме

e

Вещественное

Вещественное число в научной форме

g

Вещественное

Либо f, либо e

E

Вещественное

С экспонентой E

G

Вещественное

То же, что и g, но с Е

Символьные

s

Строка

Указатель на символы

c

Один символ

Символьный тип

Указатели

p

Выводит на экран значение как указатель в формате сегмент: смещение или просто смещение