Арифметические выражения.

Арифметические выражения, стоящие в правой части оператора присваивания, могут содержать:

  • целые и вещественные числа
  • знаки арифметических действий
  • + — сложение, вычитание
    * / умножение, деление
    % остаток от деления

  • вызовы стандартных функций
  • abs (i) модуль целого числа i
    fabs (x) модуль вещественного числа x
    sqrt (x) квадратный корень из вещественного числа x
    pow (x, y) вычисляет x в степени y

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

Особенности арифметических операций

При делении целого числа на целое остаток от деления отбрасывается, таким образом, 7/4 будет равно 1. Если же надо получить вещественное число и не отбрасывать остаток, делимое или делитель надо преобразовать к вещественной форме.

int i, n;
float x;
i = 7;
x = i / 4;   // x=1, делится целое на целое
x = i / 4.;  // x=1.75, делится целое на дробное
x =(float) i / 4;  // x=1.75, делится дробное на целое
n = 7. / 4.;  // n=1, результат записывается в целую переменную
  

Наибольшие сложности из всех действий вызывает взятие остатка. Если надо вычислить остаток от деления переменной a на переменную b и результат записать в переменную ostatok, то оператор присваивания выглядит так:

  ostatok = a % b;
  

Приоритет арифметических операций

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

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

Например:

          2   1     5   4      3     8     6   7
  x = ( a + 5 * b ) * fabs ( c + d ) — ( 3 * b — c );
  

В программировании часто используются несколько странные операторы присваивания.

  i = i + 1;
  

Если считать это уравнением, то оно бессмысленно с точки зрения математики. Но с точки зрения информатики этот оператор служит для увеличения значения переменной i на единицу. Мы берем старое значение переменной i, прибавить к нему единицу и записать результат в ту же переменную i.

Инкремент и декремент

В языке Си определены специальные операторы быстрого увеличения на единицу (инкремент)

   i++;
   ++i;
  

и быстрого уменьшения на единицу (декремент)

   i--; 
   --i;
  

Сокращенная запись арифметических выражений

Если мы хотим изменить значение какой-то переменной, то удобно использовать сокращенную запись арифметических выражений:

Сокращенная запись Полная запись
    x += a;         x = x + a;
    x -= a;         x = x - a;
    x *= a;         x = x * a;
    x /= a;         x = x / a;
    x %= a;         x = x % a;
  

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Структуры в языке Си.

Структуры в языке Си.

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

 
Функции в языке Си.

Функции в языке Си.

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

 
Указатели в языке Си.

Указатели в языке Си.

Указатель — переменная, содержащая адрес объекта. Указатель не несет информации о содержимом объекта, а содержит сведения о том, где размещен объект. Указатели похожи на метки,

 
Массивы в языке Си.

Массивы в языке Си.

Массив – это непрерывный участок памяти, содержащий последовательность объектов одинакового типа, обозначаемый одним именем. Массивы — очень полезные сущности, особенно в тех случаях, когда необходимо

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: