Добавил:
Лабы/курсовые по программированию (С++/Verilog HDL), Теория и Практика Помехоустойчивого Кодирования Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1сем Дагаев / lectures_3.pdf
Скачиваний:
34
Добавлен:
09.03.2022
Размер:
769.01 Кб
Скачать

 

 

которое удовлетворяет

условию

 

 

double exp(double num)

<= num.

 

 

 

 

exp

Вычисляет

значение

экспоненты

от

 

double log(double num);

аргумента num

 

 

 

log

Вычисляет

значение

натурального

 

double log10(double num);

логарифма от аргумента num.

 

log10

Вычисляет

значение

логарифма

по

 

double pow(double base,

основанию 10 от аргумента num.

 

pow

Вычисляет

значение аргумента base,

 

double x);

возведенное в степень x.

 

 

sin

double sin(double num);

Вычисляет

значение

синуса

от

 

 

аргумента

num. Значение

аргумента

 

double sqrt(double num);

должно быть задано в радианах.

 

sqrt

Вычисляет

значение

корня

 

double tan(double num);

квадратного от аргумента num.

 

tan

Вычисляет

значение

тангенса

от

 

 

аргумента

num. Значение

аргумента

 

 

должно быть задано в радианах.

 

16.Оператор присваивания и инструкция присваивания

Вязыке Си различают две формы оператора присваивания:

простой оператор присваивания,

составной оператор присваивания.

Составной оператор отличается наличием дополнительной операции, которая выполняется до присваивания. Рассмотрим вначале простой оператор присваивания.

Любой оператор присваивания, не входящий в состав другого выражения, может выступать в качестве инструкции присваивания, если после него поставить точку с запятой. Например, n = 5 – это оператор присваивания, а n = 5; - это инструкция присваивания.

16.1.Простой оператор присваивания

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

в запоминании в памяти входных данных и результатов вычислений некоторых выражений.

в перемещении данных из одной области памяти в другую.

Вязыке Си присваивание имеет расширенное по сравнению с другими языками (Паскаль и Бейсик) назначение. Дело в том, что в языке Си может использоваться возвращаемое оператором присваивания значение. Это связано с тем обстоятельством, что присваивание в языке Си относится к категории операторов (operator), а не инструкций (statement), как это имеет место в других языках. Приведем пример, в котором используется значение, возвращаемое оператором присваивания.

#include<stdio.h>

#include<conio.h>

34

int main(void)

{

int x = 10; int y = 20;

printf("%d\n", x = y); /* ... */

getch(); return 0;

}

Вэтом программном коде вызов функции printf() используется для вывода на дисплей результата выполнения оператора присваивания.

Оператор присваивания относится к категории бинарных операторов. В качестве знака присваивания в языке Си используется математический знак равенства “=”. При выполнении оператора присваивания вначале вычисляется его правый операнд, затем вычисленное значение записывается

вобласть памяти, адрес которой определяется его левым операндом. Требование знания адреса накладывает ограничения на выражение, которое может использоваться в качестве левого операнда присваивания. К левому операнду должна быть допустима операция взятия адреса. Выражения, допускающие применение этой операции, принято называть lvalue выражениями. Различают две категории lvalue выражений:

изменяемые,

неизменяемые.

Вкачестве левого операнда присваивания следует применять модифицируемое lvalue выражение.

Возвращаемым значением оператора присваивания является значение, записанное в его левый операнд. В книгах по языку Си и в сообщениях компилятора за левым операндом оператора присваивания закрепился термин lvalue (left side value), а за правым - rvalue (right side value) Таким образом, в общем случае простой оператор присваивания имеет следующий формат:

модифицируемое_lvalue_выражение = rvalue_выражение

Простейшим видом модифицируемого_lvalue_выражения является простая переменная, в объявлении которой отсутствует зарезервированное слово const. К числу других допустимых выражений относятся выражения, используемые для доступа к элементам массивов и структур. В качестве правого операнда оператора присваивания может использоваться произвольное выражение, тип которого совместим по присваиванию с типом операнда, стоящего слева от знака присваивания. Все арифметические типы в языке Си совместимы по присваиванию.

Приведем примеры операторов присваивания. Пусть x и y – переменные, имеющие тип double. Тогда допустимы следующие операторы присваивания.

x = 4.5 y = x - 3

35

Отметим, что приведенные выше операторы присваивания становятся инструкциями присваивания, если в конце каждого из них поставить точку с запятой:

x = 4.5; y = x - 3;

Приведем примеры некорректных присваиваний. define MAX 100

const int n = 10; int main(void)

{

n = 1;

/* Ошибка */

MAX = 200;

/* Ошибка */

return 0;

 

}

При компиляции этого программного кода в среде Builder v. 6 появились два сообщения об ошибках (error). Первое из них относилось к инструкции “n = 1;” и содержало следующее сообщение “Cannot modify const object” (Нельзя модифицировать константный объект). Второе сообщение было связано с инструкцией “MAX = 200;” и содержало сообщение “Lvalue required” (Lvalue требуется).

16.2. .Множественное присваивание

Язык Си позволяет в одном выражении присвоить значение нескольким переменным. Такое присваивание называется множественным. Пусть имеются три переменные k, n, и m, имеющие тип int. Тогда допустима следующая инструкция присваивания:

k = n = m = 4;

В результате вычисления приведенного выше выражения все три переменные получат значение, равное 4.

16.3.Составной оператор присваивания

Составной оператор присваивания имеет следующий формат a @= b

Здесь @ – один из десяти операторов: +, -, *, /, %, <<, >>, &, |, ^. Программная конструкция

a @= b

полностью эквивалентна программной конструкции a = a @ b

Приведем ряд примеров. Пусть имеются следующие операторы присваивания, записанные в форме простого присваивания, для которых имеется возможность записать их в форме составного присваивания:

x = x + dx p = p * i

Эквивалентные этим простым присваиваниям составные присваивания будут иметь следующий вид:

x += dx p *= i

36

Соседние файлы в папке 1сем Дагаев