Вівторок, 19.03.2024, 14:08
Гость

Мішатронік

Мобільна версія | Додати у вибране  | Мій профіль | Вихід | RSS |
Меню сайту
Наше опитування
Вам легко дається програмування
Всього відповідей: 2
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0


Основные операции

Рассмотрим способы обработки данных - для этого язык Си имеет широкий набор возможностей. Основные арифметическиеоперации: сложения, вычитания, умножения, деления. Операции в языке Си применяются для представления арифметических действий. Например, выполнение операции + приводит к сложению двух величин, стоящих слева и справа от этого знака. Рассмотрим операции =+-*/. В языке Си нет операции возведения в степень.

 

Операция присваивания "="

В языке Си знак равенства не означает "равно". Он означает операцию присваивания некоторого значения. С помощью оператора

 
year=2004;
 

переменной c именем year присваивается значение 2004, т.е. элемент слева от знака = - это имя переменной, а элемент справа - ее значение. Мы называем символ = операцией присваивания . В этой операции действие выполняется справа налево.

 

Возможно, различие между именем переменной и ее значением покажется незначительным? В таком случае давайте рассмотрим следующий оператор:

 
i=i+1;
 

C математической точки зрения это бессмыслица. Если вы прибавляете единицу к конечному числу, результат не может быть равен исходному числу. Но как оператор присваивания данная строка имеет вполне определенный смысл, который можно выразить, например, такой фразой. Взять значение переменной с именем i, к нему прибавить 1, а затем присвоить новое значение переменной с именем i.

 

Оператор вида

 
2004=year;
 

на языке Си не имеет смысла, поскольку 2004 - число. Мы не можем присвоить константе какое-то значение; ее значением является она сама. Поэтому, помните, что элемент, стоящий слева от знака =, всегда должен быть именем переменной.Операнд - это то, над чем выполняются операции. Например, можно описать процесс "поедания" картошки как применения операции "поедание" к операнду "картошка".

 

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

 
/* таблица результатов по шахматам */
 main( )
{
 int l, m, n;
 n=m=l=165;
 printf("l m n\n");
 printf("Счет первой партии %4d %8d %8d\n", l, m, n);
}
 

Присваивания выполняются справа налево: сначала переменная l получает значение 165, затем переменная m и наконец n. В языке Си имеется несколько других операций присваивания, которые отличаются от описанной операции. Их мы рассмотрим попозже.

 

Представим еще один пример простой программы:

 
/* использование операции присваивания */
main( )
{
/* переменные number, ouzo, cost инициализируются конкретными значениями*/
 int number=5;
 float ouzo=13.5;
 int cost=31000;
 printf("number ouzo cost\n");
 printf("number=%d ouzo=%f cost=%d\n",
 number, ouzo, cost);
}
 

Операция сложения: +

Выполнение операции + приводит к сложению двух величин, стоящих слева и справа от этого знака. Например, в результате работы оператора

 
printf("%d", 100 + 65);
 

на печать будет выведено число 165, а не выражение 100+65Операнды могут быть как переменными, так и константами. Операция + называется "бинарной", или "диадической". Эти названия отражают тот факт, что она имеет дело с двумяоперандами.

 

Пример:

 
i=j+2;
 

Переменной i присваивается значение переменной j плюс 2.

 

Операция вычитания: -

Выполнение операции вычитания приводит к вычитанию числа, расположенного справа от знака -, из числа, стоящего слева от этого знака. Оператор

 
n = 163.00 - 100.00;
 

присваивает переменной n значение 63.00.

 

Операция изменения знака: -

Знак минус используется для указания или изменения алгебраического знака некоторой величины. Например, в результате выполнения последовательности операторов

 
teg = -15;
get = -teg;
 

переменной get будет присвоено значение 15. Когда знак используется подобным образом, данная операция называется "унарной". Такое название указывает на то, что она имеет дело только с одним операндом.

 

Пример:

 
x = -x;
 

Операция изменяет алгебраический знак x.

 

Операция умножения: *

Операция умножения обозначается знаком *. При выполнении оператора

 
z = 3 * x
 

значение переменной x умножается на 3, и результат присваивается переменной z.

Операция деления: /

В языке Си символ / указывает на операцию деления. Величина, стоящая слева от этого знака, делится на величину, расположенную справа от этого знака. Например, в результате выполнения оператора

 
l = 126.0 / 2.0;
 

переменной l будет присвоено значение 63.0. Над данными целого типа операция деления производится не так, как над данными с плавающей точкой: в первом случае результат будет целым числом, а во втором - числом с плавающей точкой. В языке Си принято правило, согласно которому дробная часть у результата деления целых чисел отбрасывается. Это действие называется "усечением".

 

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

 
main( )
{
 printf("деление целых: 5/4 это %d \n", 5/4);
 printf("деление целых: 6/3 это %d \n", 6/3);
 printf("деление целых: 7/4 это %d \n", 7/4);
 printf("деление чисел с плавающей точкой: 7./4. это %2.2f \n", 7./4.);
 printf("смешанное деление: 7./4 это %2.2f \n", 7./4);
}
 

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

 
! Смешения типов следует избегать!
 

Результат выполнения указанной программы:

 
деление целых: 5/4 это 1
 деление целых: 6/3 это 2
 деление целых: 7/4 это 1
 деление чисел с плавающей точкой: 7./4. это 1.75
 смешанное деление: 7./4 это 1.75
 

В результате деления целых чисел происходит отсечение дробной части. Когда мы смешиваем целые числа и числа с плавающей точкой, результат будет таким же, как если бы оба операнда были числами с плавающей точкой. В этом случае перед делением целое преобразуется в число с плавающей точкой. Для того чтобы понять, что происходит в тех случаях, когда в одном операторе используется несколько операций, рассмотрим порядок выполнения операций. Совершенно очевидно, что изменение порядка выполнения действий может приводить к различным результатам. В языке Си каждой операции назначается уровень старшинства. Умножение и деление имеют более высокий уровень, чем сложение и вычитание, поэтому они выполняются первыми. Если же две операции имеют один и тот же уровень старшинства, они выполняются в том порядке, в котором присутствуют в операторе. Для большинства операций обычный порядок - слева направо. Операция = является исключением из этого правила. Многие программисты предпочитают представлять порядок вычислений с помощью дерева выражений. Например, выражение

 
(a+b)*c
 

будет выглядеть так:

 
*
 / \
 + c
 a b
 

Мы можем составить таблицу правил описанных нами операций. В дальнейшем мы приведем таблицу, где содержатся правила, относящиеся ко всем операциям языка Си.

 
Таблица 1.1. Операции в порядке уменьшения уровня старшинства
Операции Порядок вычисления
( ) слева направо
- (унарный) слева направо
* / слева направо
+ - (вычитание) слева направо
= справа налево

 

Форма входа
Пошук
Друзі сайту
Календар
«  Березень 2024  »
ПнВтСрЧтПтСбНд
    123
45678910
11121314151617
18192021222324
25262728293031

Єдина Країна! Единая Страна!