Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Операции над данными

РефератПомощь в написанииУзнать стоимостьмоей работы

Операция логического отрицания (!) выполняется над операндом арифметического типа. Любое значение операнда, отличное от нуля, в языке С считается истинным (числовой эквивалент этого значения — 1), значение, равное нулю, — ложным. Операция меняет логическое значение операнда: если он был равен нулю, то возвращается значение 1, если операнд был не равен нулю, то возвращается значение 0. Получения… Читать ещё >

Операции над данными (реферат, курсовая, диплом, контрольная)

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

Операндами называются данные (переменные, константы), над которыми выполняются операции.

В языке С имеется достаточно большой набор операций. Для удобства рассмотрения все операции можно классифицировать, например, по количеству используемых операндов. По этому признаку все операции делятся:

  • • па унарные (с одним операндом);
  • • бинарные (с двумя операндами);
  • • операция с тремя операндами.

Унарные операции в языке С могут использоваться в префиксной и постфиксной формах. Общий синтаксис операций:

// префиксная форма;

// постфиксная форма.

Выбор определенной формы записи зависит от конкретной операции.

К унарным операциям относятся следующие:

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

Операции изменения знака операнда унарный плюс (+) и унарный минус (-) могут выполняться над любыми выражениями арифметического типа. Унарный минус эквивалентен умножению значения операнда на -1. Унарный плюс эквивалентен умножению значения операнда на +1. Эта операция фактически ничего не делает, но может быть использована для явного указания того, что используемая в качестве операнда константа является положительным значением.

Операция побитового отрицания (~) выполняется над операндом целочисленного типа и заключается в побитовом инвертировании двоичного кода операнда (все единицы в этом коде заменяются нулями, а нули — единицами). Результатом операции является число, имеющие таким образом сформированный двоичный код.

Операция логического отрицания (!) выполняется над операндом арифметического типа. Любое значение операнда, отличное от нуля, в языке С считается истинным (числовой эквивалент этого значения — 1), значение, равное нулю, — ложным. Операция меняет логическое значение операнда: если он был равен нулю, то возвращается значение 1, если операнд был не равен нулю, то возвращается значение 0.

Операция определения размера (sizeof) может выполняться над выражением любого типа или над типом данных. В первом случае результатом выполнения операции являетея размер значения выражения в байтах, во втором — размер указанного типа данных в байтах. Результат операции имеет тип size_t, относящийся к целочисленному беззнаковому типу. Синтаксис операции:

sizeof; sizeof ().

Например:

int i, j, k;

j = sizeof (i); // значение j равно 4;

k = sizeof (int); // значение k равно 4.

К операциям увеличения и уменьшения значения относятся:

  • • инкремент (++);
  • • декремент (—).

Инкремент увеличивает значение операнда на 1, декремент — уменьшает значение операнда на 1.

Эти операции могут использоваться в префиксной и постфиксной формах. В префиксной форме в вычислении значения выражения используется уже измененное значение операнда (в результате значение выражения совпадает со значением операнда), в постфиксной форме сначала производится вычисление выражения, а потом изменение значения операнда (в результате значение выражения оказывается на единицу больше или меньше значения операнда). Например:

int i, j;

i=l ;

j =+ + i; //.

i=l;

j=i++; //.

использована префиксная форма. Значение i сначала увеличено на 1 (i=2), а потом присвоено j (j=2).

использована постфиксная форма. Значение i сначала присвоено j (j=l), а затем i увеличено на 1 (i=2).

К адресным операциям относятся:

  • • операция получения адреса операнда (&);
  • • операция обращения по адресу (*).

Эти операции выполняются над данными, имеющими тип указателя, и будут рассмотрены ниже.

Бинарные операции выполняются над двумя операндами. Общий синтаксис этих операций:

соперанд 1>

К бинарным операциям относятся следующие:

  • • арифметические операции;
  • • операции сравнения;
  • • побитовые операции;
  • логические операции;
  • операция присваивания;
  • • прочие бинарные операции.

Арифметические операции выполняются над операндами числового типа. Результатом также является значение числового типа. К разряду арифметических относятся операции:

  • • сложения (+) и вычитания (-). Операнды в этих операциях, кроме числового типа, могут иметь и тип указателя, который будет рассмотрен позднее;
  • • умножения (*) и деления (/);
  • • получения остатка от деления (деление по модулю %). Операндами для этой операции являются целочисленные значения. Если изначально операнды не являются целыми числами, то они будут приведены к целому тину. Результат операции будет положительным, если оба операнда неотрицательны, в противном случае знак результата зависит от конкретной реализации компьютера.

Операции сравнения выполняются над операндами числового типа. Результатом операции является одно из двух целочисленных значений: 0 соответствует лжи (FALSE), 1 соответствует истине (TRUE). К операциям сравнения относятся:

  • • < — меньше;
  • • <= — меньше или равно;
  • • > — больше;
  • • >= — больше или равно;
  • • == — равно;
  • • ≠ — не равно.

Например:

int i, j;

char resl, res2;

i = 5; j = 8;

resl = i == j; res2 = i < j ;

// объявлены целочисленные переменные // i и j.

// объявлены символьные переменные // resl и res2.

// переменной i присвоено значение 5 // переменной j присвоено значение 8 // переменной resl присвоено значение // результата операции i == j,.

// в результате эта переменная получит // значение О (FALSE).

// переменной res2 присвоено значение // результата операции i < j,.

// в результате эта переменная получит // значение 1 (TRUE).

Побитовые операции выполняются над целочисленными операндами. Результатом также является значение целого типа. К побитовым операциям относятся:

• операции побитового левого («) и правого («) сдвига. Операция сдвигает двоичный код левого операнда влево или вправо на количество разрядов, заданное значением правого операнда. Соответствующее количество разрядов слева или справа теряется, а вновь добавленные разряды заполняются нулями. Например: unsigned char i, j, k;

i = 163; // двоичное представление 163 равно 10 100 011.

j = i >> 2; // сдвиг вправо дает значение 101 000,.

// равное 40.

k= i << 5; // сдвиг влево дает значение 1 100 000,.

// равное 96.

• поразрядные побитовые операции: конъюнкция (&), дизъюнкция (|), исключающая дизъюнкция (Л). Двоичный код результата формируется путем выполнения соответствующих побитовых операций над двоичными кодами операндов. Результаты побитовых операций приведены в табл. 5.3. Например: unsigned char i, j, k, m, n;

i=101; // двоичное представление 101 равно 1 100 101.

j = 98; // двоичное представление 98 равно 1 100 010.

k=i&j; // побитовая конъюнкция дает значение.

// 1 100 000, равное 96.

m = i I j; // побитовая дизъюнкция дает значение // 1 100 111, равное 103.

n = i Л j; // побитовая исключающая дизъюнкция дает.

// значение 111, равное 7.

Результаты побитовых операций

Таблица 53

а.

ь.

а & Ь.

а | Ь.

а л b.

Логические операции объединяют несколько операндов, имеющих значение ЛОЖЬ (нулевое значение) или ИСТИНА (любое ненулевое значение). Часто эти операции используются для создания сложных условий, объединяющих несколько простых операций сравнения. К логическим операциям относятся логическое И (&&) и логическое ИЛИ (||). Результаты логических операций приведены в табл. 5.4. В этой таблице под значением X подразумевается любое ненулевое значение.

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

а.

ь.

а && b.

а II b.

X.

X.

X.

X.

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

Синтаксис операции:

=.

Результатом операции является значение правого операнда. Это позволяет записывать несколько операторов присваивания в цепочку:

An — An_j — … А2 — А, При выполнении такой операции операнды группируются справа налево:

К = < • • • = (А, = At))).

В результате всем операндам будет присвоено значение А,.

В языке С может применяться специальная форма операции присваивания. Ее синтаксис:

=.

Операция выполняется над значениями операнда1 и операнда2, полученное значение присваивается операнду 1. Например:

  • • операция i = i + 5 эквивалентна операции i+=5
  • • операция i = i & j эквивалентна операции i&= j

К прочим бинарным операциям в языке С можно отнести операции:

  • • последовательного выполнения «,». Эта операция группирует выражения слева направо. Разделенные операцией выражения вычисляются последовательно слева направо, в качестве результата сохраняются тип и значение самого правого выражения. Операция обычно используется для выполнения нескольких выражений в ситуациях, где по синтаксису может быть лишь одно;
  • • приведения типа «()». Операция обеспечивает приведение типа значения выражения, представляемого вторым операндом, к типу, спецификация которого задается первым операндом. Например:
  • (float) i; // переменная i приводится к типу

// вещественного числа одинарной точности.

  • • индексации «([])» используется при работе с массивами и будет рассмотрена ниже;
  • • вызова функции «()». Эта операция будет рассмотрена ниже;
  • • обращения к элементам объекта сложного типа. Эти операции будут рассмотрены ниже.

В языке С имеется единственная операция, работающая с тремя операндами — это условная операция «?». Ее синтаксис:

? :

При выполнении операции сначала вычисляется значение операнда! Если это значение является истинным (отличным от 0), то результатом операции является значение онеранда2, если ложным (равным 0), то операпдаЗ.

Например, следующая операция будет вычислять модуль числа X:

Х>=0? X: -X;

Если число X неотрицательно, то результатом операции будет значение числа X, а иначе — значение числа X с противоположным знаком.

Приоритеты выполнения операций в языке С приведены в табл. 5.5. Порядок выполнения всех перечисленных в ней операций — слева направо.

Таблица 5.5.

Приоритеты выполнения операций.

Приоритет.

Операция.

Обозначение.

Префиксный инкремент.

++.

Префиксный декремент.

;

Вызов функции.

О.

Индексация.

II.

Указатель структуры.

;

Член структуры.

Логическое отрицание.

!

Побитовое отрицание.

~.

Унарный минус.

;

Унарный плюс.

Приведение типа.

(type).

Обращение по адресу.

*.

Получение адреса.

&.

Определение размера.

sizeof.

Приоритет.

Операция.

Обозначение.

Умножение.

*

Деление.

Остаток от деления.

%

Сложение.

Вычитание.

;

Поразрядный сдвиг влево.

".

Поразрядный сдвиг вправо.

".

Меньше.

<

Меньше или равно.

<=.

Больше.

>

Больше или равно.

>=.

Равно.

==.

Не равно.

! =.

Поразрядная конъюнкция.

&.

Поразрядная исключающая дизъюнкция.

А.

Поразрядная дизъюнкция.

Логическое И.

&&.

Логическое ИЛИ.

II.

Условная операция.

? ;

Присваивание.

=.

Составное сложение.

+=.

Составное вычитание.

-=.

Составное умножение.

* =.

Составное деление.

/=.

Составной остаток от деления.

о/ ~ /о—

Составной поразрядный сдвиг влево.

«=.

Составной поразрядный сдвиг вправо.

«=.

Составная поразрядная конъюнкция.

&=.

Составная поразрядная исключающая дизъюнкция.

А_.

Составная поразрядная дизъюнкция.

1=.

Операция «запятая».

".

Постфиксный инкремент.

+ +.

Постфиксный декремент.

;

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

Показать весь текст
Заполнить форму текущей работой