1.3.7. Аддитивные операции

Содержание
Возврат к предыдущей части 1.3.6 Мультипликативные операции

К аддитивным операциям относятся сложение (+) и вычитание (-). Операнды могут быть целого или плавающего типов. В некоторых случаях над операндами аддитивных операций выполняются общие арифметические преобразования. Однако преобразования, выполняемые при аддитивных операциях, не обеспечивают обработку ситуаций переполнения и потери значимости. Информация теряется, если результат аддитивной операции не может быть представлен типом операндов после преобразования. При этом сообщение об ошибке не выдается.

Пример:

1
2
     int   i=30000, j=30000, k;
            k=i+j;

В результате сложения k получит значение равное -5536.

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

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

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

Операция вычитания (-) вычитает второй операнд из первого. Возможна следующая комбинация операндов:

  • 1. Оба операнда целого или плавающего типа.
  • 2. Оба операнда являются указателями на один и тот же тип.
  • 3. Первый операнд является указателем, а второй — целым.

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

Пример:

1
2
3
4
     double d[10],* u;
     int i;
     u = d+2;  /*  u  указывает на третий элемент массива */
     i = u-d;  /*  i  принимает значение равное 2         */

Читать далее. Раздел 1.3.8. Операции сдвига
Содержание

Добавить комментарий

Ваш e-mail не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.