русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Бинарных операций


Дата добавления: 2013-12-24; просмотров: 1135; Нарушение авторских прав


Преобразование типов операндов

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

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

Операции (продолжение).

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

Операнд_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 соответствует схеме выполнения многих машинных команд типа "регистр-память".

 
 

 

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

Типы операндов преобразуются к общему типу в порядке увеличения их "допустимого диапазона значений". Поэтому неявные преобразования всегда идут от "меньших" объектов к "большим". Схема выполнения преобразований операндов арифметических операций:

 

short, char ® int ® unsigned ® long ® double

float ® double

При этом действуют следующие правила:

- значения типов char и short всегда преобразуются в int (даже если оба операнда имеют одинаковый тип);

- аналогично, значения типа float всегда преобразуются в double;

- после этого определяется "старший" из двух типов операндов, и другой операнд преобразуется к этому типу. Порядок "старшинства":

 

long double

double

long long

unsigned long

long

unsigned int

int

 

Внимание: результатом 1/3 будет «0», чтобы избежать такого рода ошибок необходимо явно изменять тип хотя бы одного операнда, т.е. записывать, например: 1. / 3.

Типы char и int могут свободно смешиваться в арифметических выражениях, при этом каждая переменная типа char автоматически преобразуется в int. Это обеспечивает значительную гибкость при проведении определенных преобразований символов.

 



<== предыдущая лекция | следующая лекция ==>
Логические операции | Операция явного приведения типа


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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