Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Сокращенная запись операции присваивания

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

Логические операции

Перечень логических операций в порядке убывания относительного приоритета и их обозначения:

! - отрицание (логическое НЕТ);

&& - коньюнкция (логическое И);

|| - дизьюнкция (логическое ИЛИ).

Общий вид операции отрицания:

!<выражение>

Общий вид операций коньюнкции и дизьюнкции

<выражение1> <знак_операции> <выражение2>

Например:

y>0 && x==7 ® истина, если 1-е и 2-е выражения истинны;

e>0 || x==7 ® истина, если хотя бы одно выражение истинно.

Ненулевое значение операнда трактуется как "истина", а нулевое - "ложь".

Например:

!0 ® 1

!5 ® 0

x=10; y=10;

!((x==y)>0) ® 0

 

Пример правильной записи двойного неравенства:

0<x<100 → (0<x)&&(x<100)

 

Особенность операций коньюнкции и дизьюнкции – экономное последовательное вычисление выражений-операндов:

<выражение1> <операция><выражение2>,

- если выражение1 операции коньюнкция ложно, то результат операции - ноль и выражение2 может не вычисляться;

- если выражение1 операции дизьюнкция истинно, то результат операции - единица и выражение2 может не вычисляться.

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

scanf("%d",&i) && test1(i) && test2(i) ® нулевой результат одной из функций может привести к игнорированию вызова остальных;

search1(x) || search2(x) || search3(x) ® только ненулевой результат одной из функций может привести к игнорированию вызова остальных.

Действительно ли "ненужные" функции не будут вызываться - зависит от настроек компилятора.

 

Формат операции присваивания:

Операнд _1 = Операнд _2

Операндом _1 может быть только переменная. Этот (левый) операнд операции присваивания получил название L–значение, (Lvalue, Leftvalue). Операндом _2 может быть любое выражение, составленное в соответствии с синтаксисом языка Си. Этот (правый) операнд операции присваивания назвали R–значение, (R–value, Right–value).

Операция присваивания может быть как отдельным оператором (тогда после нее ставится знак;), так и частью другого выражения (тогда ее результатом считается присвоенное значение). Если в выражении подряд без скобок идут несколько операций =, то они выполняются справа налево, например:

int i, j, k;

float x, y, z;

...

i = j = k = 0; «k = 0, j = 0, i = 0;

x = i + (y = 3) – (z = 0); «z = 0, y = 3, x = i + yz;

Примеры недопустимых выражений:

– присваивание константе: 2 = x + y;

– присваивание функции: getch () = i;

– присваивание результату операции: (i + 1) = 2 + y;

 

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

1) вместо записи:

v = v # e;

где # – любая арифметическая или битовая операция, рекомендуется использовать запись v #= e;

Например,

i = i + 2; «i += 2; (+= – без пробелов);

2) вместо записи:

x = x # 1;

где # означает + либо -, x – переменная одного из целочисленных типов (или переменная-указатель), рекомендуется использовать запись:

 

## x; – префиксную, или x ##; – постфиксную.

 

Если эти операции используются в отдельном виде, то различий между постфиксной и префиксной формами нет. Если же они используются в выражении, то в префиксной форме (## x), сначала значение x изменится на 1, а затем будет использовано в выражении; в постфиксной форме (x ##) – сначала значение используется в выражении, а затем изменяется на 1. (Операции над указателями будут рассмотрены позже.)

 

 

Рекомендации использования сокращений обоснованы возможностью оптимизации программы (ускорение в работе программы), т.к. схема выражения вида v #= e соответствует схеме выполнения многих машинных команд типа "регистр-память".

 

<== предыдущая лекция | следующая лекция ==>
Операции сравнения | Операция явного приведения типа
Поделиться с друзьями:


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


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



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




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