Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Операции языка Си




Из операций и операндов строятся операторы- выражения, которые служат для получения значения. Рассмотрим основные операции, которые будем разделять на следующие классы: унарные, применяются к одному операнду; бинарные, применяются к двум операндам; тернарная операция (единственная), применяется к трем операндам. Некоторые операции просто будут перечислены, а более подробно будут рассмотрены позднее.

Унарные операции:

«-» - «унарный минус» применяется к арифметическим операндам (целым, вещественным переменным или константам), результат операции значение операнда с противоположным знаком;

«+» - «унарный плюс» операция ничего не делает, введена для симметрии с операцией «унарный минус»;

«*» - «обращение по адресу», операция применяется к указателям, результат операции значение объекта (операнда), на который указывает указатель;

«&» - «получение адреса», результат операции – адрес объекта (переменной);

«~» - «поразрядное отрицание» операция применяется только к целым операндам, результат операции целое значение, в котором разряды исходного операнда инвертированы;

«!» - «логическое отрицание» («логическое НЕ»), дает в результате значение 0, если операнд есть истина (не нуль), и значение 1, если операнд равен нулю (в Visual C++ тип результата bool), следует отметить, что в базовом Си стандарта ANSI отсутствовал в явном виде логический тип, который бы принимал 2 значения: «истина» и «ложь», вместо логического типа использовался, как правило, целый тип, значение 0- интерпретировалось, как «ложь», любое значение отличное от 0 являлось «истина»;

(<тип>) – «операция преобразования типа», была рассмотрена ранее;

«sizeof» – операция определения размера предназначена для вычисления размера объекта или типа в байтах, и имеет две формы:

sizeof выражение или sizeof(выражение)

sizeof(тип)

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

int i=10, j;

j=++i; // Префиксная форма операции

В результате выполнения данного фрагмента, i и j будут равны 11 (переменной j присваивается новое значение i, увеличенное на 1), если изменить форму операции ++:

int i=10, j;

j=i++; // Постфиксная форма операции

то, после выполнения i будет равно 11, а j будет равно 10, переменной j присваивается старое значение переменной i, а затем оно увеличивается на 1. Операции чаще применяют к целым операндам, но их можно применять к вещественным операндам и даже к указателям.

Бинарные операции можно разделить на следующие классы:

Арифметические:

«+» - бинарный плюс;

«-» - бинарный минус;

«*» - умножение;

«/» - деление;

% - получение остатка от деления.

Первые четыре операции применяются к арифметическим операндам: целым или вещественным, операции «+» и «-» ограниченным способом могут применяться к указателям. Операция – «%» применяется только к целым операндам.

Логические:

«&&» - логическое И;

«||» - логическое ИЛИ;

«^» - логическое исключающее ИЛИ.

Операнды логических операций могут иметь арифметический тип или быть указателями, при этом операнды в каждой операции могут быть различных типов. Преобразования типов не производятся, каждый операнд оценивается с точки зрения его эквивалентности нулю (операнд, равный нулю, рассматривается как «ложь», не равный нулю — как «истина»). В Visual C++ тип результата int или bool в зависимости от типов операндов.

Поразрядные:

«&» - поразрядное И;

«|» - поразрядное ИЛИ;

«^» - поразрядное исключающее ИЛИ;

«>>» - поразрядный сдвиг вправо;

«<<» - поразрядный сдвиг влево.

Данные операции применяются только к целочисленным операндам и работают с их двоичными представлениями. При выполнении операций «&», «|», «^» операнды сопоставляются побитово (первый бит первого операнда с первым битом второго, второй бит первого операнда со вторым битом второго, и т д.).

Операции сдвига сдвигают двоичное представление первого операнда влево или вправо на количество двоичных разрядов, заданное вторым операндом. При сдвиге влево «<<» освободившиеся разряды обнуляются. При сдвиге вправо «>>» освободившиеся биты заполняются нулями, если первый операнд беззнакового типа, и знаковым разрядом в противном случае.

Отношения (сравнения):

«==» - равно (не путать с операцией присваивания «=»);

«!=» - не равно;

«>» - больше;

«<» - меньше;

«>=» - больше или равно;

«<=» - меньше или равно.

Операции отношения сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результатом операции является значение «истина» (любое значение не равное 0, как правило, 1) или «ложь» (0). В Visual C++ тип результата bool.

Присваивания:

«=» - простое присваивание.

Первый операнд должен быть L-значением область памяти будет занесен результат операции. второй — выражением. Сначала вычисляется выражение, стоящее в правой части операции, а потом его результат записывается в область памяти, указанную в левой части. Так называемое, L-значение (L- value) (леводопустимое значение, может быть использовано слева от операции присваивания), так обозначается любое выражение, адресующее некоторый участок памяти, в который можно занести значение.

op= (где op – символ бинарной операции) – комбинированное присваивание, комбинация бинарное операции с операцией присваивания, например, «+=» - присваивание со сложением, по аналогии существуют операции: «*=», «/=», «-=», «%=», «&=», «|=», «^=» и др. Комбинированные операции работают по следующему правилу:

i+=10; аналогично i=i+10;

Другие бинарные операции, просто их перечислим:

() – вызов функции;

[ ] – обращение к элементу массива;

«.» («точка») – обращение к полю переменной структурного типа;

«->» - обращение к полю переменной структурного типа через указатель;

«,» («запятая») – последовательное вычисление, может ставится между выражениями, выражения вычисляются последовательно, результат операции результат второго операнда (выражения).

Тернарная операция:

«?:» - условная операция.

Формат: <операнд1>? <операнд2>: <операнд3>

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

y= x>=0? x: -x;

переменной y присваивается значения модуля переменной x.

 




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 475; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.