Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lesson_1_2.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
280 Кб
Скачать
☆
  1. Арифметические операции с числами. Инкремент. Декремент. Сокращенные арифметические формы

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

int wheels = 4 + 2;

Значения 4 и 2 — это операнды, знак + обозначает операцию сложения, а 4 + 2 — это выражение, результатом которого является 6.

• Операция + выполняет сложение операндов. Например, 4 + 20 дает 24.

• Операция - вычитает второй операнд из первого. Например, 12-3 дает 9.

• Операция * умножает операнды. Например, 28*4 дает 112.

• Операция / выполняет деление первого операнда на второй.

Например, 1000 / 5 дает 200. Если оба операнда являются целыми числами, то результат будет равен целой доли частного. Например, 17/3 дает 5, с отброшенной дробной частью.

• Операция % находит остаток от деления первого операнда на второй. Например, 19 % 6 равно 1, поскольку 6 входит в 19 три раза, с остатком 1. Оба операнда при этом должны быть целочисленными; использование операции % над числами в формате с плавающей точкой приведет к ошибке времени компиляции.

Другие примеры: 11%2=1; 5%37=5

Задача: ввести двузначное целое число – определить сумму его цифр.

#include <iostream>

using namespace std;

void main()

{

setlocale (LC_CTYPE, "russian");

int a;

cout << "Введите двузначное целое число: ";

cin >> a;

cout<< "Сумма цифр числа = " << a/10+a%10 << endl;

cin.get();

}

Порядок выполнения операций: приоритеты операций и ассоциативность

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

Для операций умножения и деления характерна ассоциативность слева направо.

Различные результаты, получаемые после деления

Если оба операнда являются целочисленными, то C++ выполнит целочисленное деление. Это означает, что любая дробная часть результата будет отброшена, приводя результат к целому числу. Если один или оба операнда являются значениями с плавающей точкой, то дробная часть остается, поэтому результатом будет число с плавающей точкой.

Операции инкремента и декремента

Операция инкремента (+ + ), которая получила отражение в самом названии C++, а также операция декремента (--). Эти операции выполняют два чрезвычайно часто встречающихся действия в циклах: увеличивают и уменьшают на единицу значение счетчика цикла.

Каждая из них имеет два варианта. Префиксная версия операции указывается перед операндом, как в ++х. Постфиксная версия следует после операнда, как в х++. Эти две версии имеют один и тот же эффект для операнда, но отличаются в контексте применения.

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

Грубо говоря, нотация а++ означает "использовать текущее значение а при вычислении выражения, затем увеличить а на единицу". Аналогично, нотация ++а означает "сначала увеличить значение а на единицу, затем использовать новое значение при вычислении выражения".

Plus_on.cpp

#include <iostream>

using namespace std;

void main ()

{

setlocale (LC_CTYPE, "russian");

int a;

cout << "Введите число: ";

cin >> a; //ввели 1

cin.get();

cout << a++<< endl; //выводится 1 после ; 2

cout << a++<< endl; //выводится новое значение 2 после ; будет 3

cout << ++a << endl; //выводится новое значение 3+1=4 после ; тоже будет 4

cout << a << endl;

cin.get();

cin.get();

}

Plus_on_2.cpp

#include <iostream>

using namespace std;

void main ()

{

setlocale (LC_CTYPE, "russian");

int a;

cout << "Введите число: ";

cin >> a; //ввели 1

cin.get();

//cout << a++ << endl; //вывод 1 после ; будет увеличение на 1 и будет 2

//cout << ++a << endl; //вывод 2+1=3 после ; тоже будет 3

//cout << a << endl;

cout << --a << endl; //вывод 0 после ; тоже 0

cout << a++ << endl; //вывод 0 после ; 1

cout << --a << endl; //вывод 0 после ; тоже 0

cout << a << endl;

cin.get();

cin.get();

}

а++ - сначала операция, ++ изменяет после ;

++а - сначала прибавление потом операция

Пример:

int a=6, b=3, c=0;

c=(++b)++ + a++; //4+6=10

cout << "c= " << c << endl; //10

cout << "b= " << b << endl; //4+1=5

cout << "a= " << a << endl; //6+1=7

Пример:

int a=3, b=7, c=11, d=0;

d = ((a++)++ + (--c + (++b)++)); //3+(10+8)=21

cout << "d= " << d << endl; //21

cout << "a= " << a << endl; //3+1+1=5

cout << "c= " << c << endl; //10

cout << "b= " << b << endl; //9

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

х = 2 * х++ * (3 - ++х) ; //не поступайте так

В C++ поведение операторов подобного рода не определено

Сокращенные арифметические формы

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

і = і + by

В C++ предусмотрена комбинированная операция сложения с присваиванием, которая .позволяет получить тот же результат, но более кратко:

і += by

+= Присваивает l + r операнду l

-= Присваивает l - r операнду l

*= Присваивает l * r операнду l

/= Присваивает l / r операнду l

%= Присваивает l % r операнду l

Где L — левый операнд, R- правый операнд

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]