Арифметические операции

Последнее обновление: 18.05.2017

Язык программирования Си поддерживает все основные арифметические операции. Эти операции производятся над числами. Значения, которые участвуют в операции, называются операндами. Список имеющихся в Си операций:

  • +

    Операция сложения возвращает сумму двух чисел:

    #include <stdio.h>
    
    int main(void)
    {
    	int a = 67;
    	int b = 33;
    	int c = a + b + 7;
    	printf("a + b + 7 = %d \n", c);		// 107
    	return 0;
    }
    
  • -

    Операция вычитания возвращает разность двух чисел:

    #include <stdio.h>
    
    int main(void)
    {
    	int a = 67;
    	int b = 33;
    	int c = a - b;
    	printf("a - b = %d \n", c);		// 34
    	return 0;
    }
    
  • *

    Операция умножения возвращает произведение двух чисел:

    int c = 15 * 3;		// 45
    
  • /

    Операция деления двух чисел:

    #include <stdio.h>
     
    int main(void)
    {
        int a = 15 / 3;         // 5
        float d = 34.0 / 3.0;   // 11.333333
    
        printf("a=%d \n", a);
        printf("d=%f \n", d);
        return 0;
    }
    

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

    float f = 10 / 4;
    printf("f = %f \n", f);		// 2.0
    

    Чтобы результат представлял вещественное число, один из операндов также должен представлять вещественное число:

    float f = 10.0 / 4;
    printf("f = %f \n", f);		// 2.5
    
  • %

    Возвращает результат деления двух чисел по модулю (получение остатка от деления):

    int a = 35 % 3;			// 2 (35 - 33 = 2)
    

Операции *, /, % имеют больший приоритет, чем + и - :

int a = 8;
int b = 7;
int c = a + 5 * b;		// 43
printf("c = %d \n", c);	// 43

Здесь результатом будет число 43:

  1. 5 * b = 35

  2. a + 35 = 43

С помощью скобок мы можем переопределить порядок операций, сделав, чтобы операции с более низким приоритетом выполнялись до операций с более высоким приоритетом:

int a = 8;
int b = 7;
int c = (a + 5) * b;	// 91

Здесь результатом будет число 91:

  1. a + 5 = 13

  2. 13 * b = 91

Также в Си есть специальные унарные операции над одним числом: ++ (инкремент) и -- (декремент). Каждая из операций имеет две разновидности: префиксная и постфиксная.

  • Префиксный инкремент (++x). Увеличивает значение переменной на единицу и полученное значение используется как значение выражения ++x

    int a = 8;
    int b = ++a;
    printf("a = %d \n", a);	// 9
    printf("b = %d", b);	// 9
    
  • Постфиксный инкремент (x++). Увеличивает значение переменной на единицу, но значением выражения x++ будет то, которое было до увеличения на единицу:

    int a = 8;
    int b = a++;
    printf("a = %d \n", a);	// 9
    printf("b = %d", b);	// 8
    
  • Префиксный декремент (--x). Уменьшает значение переменной на единицу, и полученное значение используется как значение выражения --x

    int a = 8;
    int b = --a;
    printf("a = %d \n", a);	// 7
    printf("b = %d", b);	// 7
    
  • Постфиксный декремент (x--). Уменьшает значение переменной на единицу, но значением выражения x-- будет то, которое было до уменьшения на единицу:

    int a = 8;
    int b = a--;
    printf("a = %d \n", a);	// 7
    printf("b = %d", b);	// 8
    

Рассмотрим более сложную ситуацию:

int a = 8;
int b = 7;
int c = a+++b;
printf("a = %d \n", a);	// 9
printf("b = %d \n", b);	// 7
printf("c = %d \n", c);	// 15

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

int c = (a++) + b;

Аналогично будет расцениваться выражения с постфиксным декрементом: int c = a---b;.

Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850