Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Арифметические операции




Операции и выражения

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

Точно так же и в языке C следующим уровнем представления данных после одиночных переменных являются своего рода формулы, называемые арифметическими выражениями. Единственное отличие выражений C от математических формул заключается в том, что набор операций, соединяющих члены выражения, несколько шире

.

Операции характеризуются своим приоритетом, определяющим порядок, в котором производится вычисление выражения. Как и в обычных формулах, для изменения порядка оценки выражения могут применяться круглые скобки. Знак равенства здесь является операцией присваивания.

 

В следующей таблице дана сводка всех операций языка С в порядке убывания приоритета.

 

Таблица 1. Операции языка С

Операция Описание Приоритет Ассоциация
Первичные и постфиксные операции
[] индексация массива   слева направо
() вызов функции   слева направо
. элемент структуры   слева направо
-> элемент указателя   слева направо
++ постфиксный инкремент   слева направо
-- постфиксный декремент   слева направо
Одноместные операции
++ префиксный инкремент   справа налево
-- префиксный декремент   справа налево
sizeof размер в байтах   справа налево
(тип) приведение типа   справа налево
~ поразрядное NOT   справа налево
! логическое NOT   справа налево
- унарный минус   справа налево
& взятие адреса   справа налево
* разыменование указателя   справа налево
Двухместные и трехместные операции
Мультипликативные
* умножение   слева направо
/ деление   слева направо
% взятие по модулю   слева направо
Аддитивные
+ сложение   слева направо
- вычитание   слева направо
Поразрядного сдвига
<< сдвиг влево   слева направо
>> сдвиг вправо   слева направо
Отношения
< меньше   слева направо
<= меньше или равно   слева направо
> больше   слева направо
>= больше или равно   слева направо
== равно   слева направо
         

 

Операция Описание Приоритет Ассоциация
! = не равно   слева направо
Поразрядные
& поразрядное AND   слева направо
^ поразрядное XOR   слева направо
| поразрядное OR   слева направо
Логические
&& логическое AND   слева направо
|| логическое OR   слева направо
Условные
?: условная операция   справа налево
Присваивания
= присваивание   справа налево
*= присвоение произведения   справа налево
/= присвоение частного   справа налево
%= присвоение модуля   справа налево
+= присвоение суммы   справа налево
-= присвоение разности   справа налево
<<= присвоение левого сдвига   справа налево
>>= присвоение правого сдвига   справа налево
&= присвоение AND   справа налево
^= присвоение XOR   справа налево
|= присвоение OR   справа налево
, запятая   слева направо

 

 

Арифметические операции

К арифметическим мы отнесем те операции, которые перечислены в таблице под рубриками “Мультипликативные” и “Аддитивные”. Нужно сказать, что только эти операции (да и то за исключением взятия по модулю) имеет смысл применять к вещественным операндам (типам float, double и long double). Для таких операндов все обстоит вполне понятным образом; это обычные умножение, деление, сложение и вычитание.

Операция взятия по модулю применяется только к целочисленным операндам (char, short, int. long) и дает остаток от деления первого операнда на второй.

Специальной операции деления нацело в С нет — для него применяется обычная операция деления (/). Если оба операнда ее являются целыми, то результат этой операции также будет целым, равным частному от деления с остатком первого операнда на второй.

Функции

Функция является основным структурным элементом языка С.

Синтаксис определения функции:

 

возвращаемый_тип имя_функции(список_параметров)

{

<тело_функции>

}

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

 

Оператор не обязан располагаться в одной строке. Он может занимать и несколько строк; переход на следующую строку с точки зрения компилятора эквивалентен простому пробелу.

 

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

 

Функции пишутся для того, чтобы можно было их вызывать в различных местах программы. Вызов функции является выражением и принадлежит к типу, указанному в ее определении; он имеет вид

 

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

 

Значение, возвращаемое функцией, можно игнорировать. Мы так и поступали, когда выводили на экран сообщения функцией printf().

 

Функции, “возвращающие значение” типа void, могут вызываться только таким образом. С другой стороны, возвращаемое функцией значение можно использовать в выражениях наряду с переменными и константами:

 

double arg = 0.456;

double result = 1. - cos(arg);

 

Пока мы имели дело всего с тремя функциями: main (), printf () и getch (). Теперь подробнее познакомимся с printf () и другими функциями ввода-вывода стандартной библиотеки С.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...