Стандартные математические функции
Операции преобразования типов
Использование в выражениях операндов разных типов
Оператор-выражение
Операция присваивания
Операция присваивания выполняет действия по занесению результатов выражения, стоящего справа от знака присваивания = в область памяти, определяемую выражением, стоящим слева от знака присваивания. Чаще всего слева от знака присваивания стоит простая переменная. При выполнении присваивания происходит преобразование типа результата правого выражения к типу левого операнда.
Результат операции присваивания - значение присвоенной величины.
Поскольку присваивание является операцией, а не оператором, то в одном выражении допускается несколько присваиваний. В этом случае они выполняются справа налево
Например:
ab = ( c = d+5 ) * 6
Присваивание имеет самый низкий приоритет из всех операций.
Выражение, оканчивающееся точкой с запятой, является оператором, т.е. наименьшей элементарной частью программы.
БНФ:
оператор = выражение ";"
Пример:
ab = ( c = d + 5 ) * 6; /* это оператор */
В дальнейшем будем строго придерживаться этой терминологии, т.е. выражением будем называть совокупность операндов, связанных операциями, а оператором - выражение заканчивающейся точкой с запятой.
При участии в арифметических операциях операндов разных типов, перед выполнением операции осуществляется преобразование типов так, чтобы не было потери точности. Затем осуществляется сама операция.
Типы данных в порядке возрастания точности:
char, short, int, long, float, double.
Пример:
int a, c;
float d, e;
e = d*(c+e); /* c будет преобразовано в float */
a = 'A' + 20; /* 'A' будет преобразовано в int */
В некоторых случаях правила преобразования типов не позволяют получить верный результат, например:
int a, b;
float c;
a = 7; b = 14;
c = a/b; /* результат 0 */
Для получения правильного результата можно поступить так
c = a; c = c/b;
А можно применить операцию преобразования типа:
БНФ:
преобразование_типа = "("имя_типа ")" выражение
имя_типа - название любого типа, в том числе и заданного программистом.
Для нашего примера применение операции преобразования типа будет выглядеть так:
c = (float)a / (float)b;
Операция преобразования типа имеет приоритет более высокий, чем арифметическая операция.
В любых арифметических выражениях можно использовать стандартные математические функции, которые можно применять к любым числовым операндам.
При использовании этих функций в программу необходимо включить файл <math.h>, т.е. необходимо использовать директиву #include <math.h> . При этом будут определены следующие функции:
sin(x) - синус (аргумент в радианах);
cos(x) - косинус (аргумент в радианах);
tan(x) - тангенс (аргумент в радианах);
asin(x) - арксинус (результат в радианах);
acos(x) - арккосинус (результат в радианах);
atan(x) - арктангенс (результат в радианах);
sinh(x) - гиперболический синус;
cosh(x) - гиперболический косинус;
tanh(x) - гиперболический тангенс;
log10(x) - десятичный логарифм;
pow10(x) - возведение числа 10 в степень x;
log(x) - натуральный логарифм;
exp(x) - экспонента;
sqrt(x) - квадратный корень;
pow(x,y) - возведение x в степень y;
fabs(x) - абсолютная величина для double;
abs(x) - абсолютная величина для int.