C/C++

Почему 12, а не 2.4?????

Добрый вечер! Я тут решаю задачку по C++, не зная C++
И нужно крч написать, что выдаст программа, которую я оставлю с низу
По всем математическим законам, и по моему личному мнению, там должно быть 2,4
НООО!!! Абсолютно все компиляторы по C++, пишут что там ответ 12.
Объясните пожалуйста, добрые люди, как так?

#include <iostream>
using namespace std;
int main() {
int x = 12;
int y = 5;
int z = x / y;
int m = x % 2;
int n = x;
x = z;
z = n;
y = m*x + z;
cout<< y<< " ";
}

Причем, я попытался её в питон переписать, и сука, там тоже 2,4.
Как я понимаю, я чего то не понимаю
Чего-то не вижу
Добрый вечер. В языке программирования C++, при делении двух целых чисел получаемое число тоже будет целым. То есть, десятичная часть просто отбрасывается.

В вашем случае, 12 делится на 5. Математически результат этой операции равен 2.4, но, поскольку мы работаем с целыми числами, результат будет просто 2, а десятичная часть отбрасывается.

Следующая операция -- это %, она возвращает остаток от деления. 12 делится на 2 без остатка, поэтому m будет равняться 0.

Затем вы меняете значения x и z — x становится равным z (то есть 2), а z — n, то есть 12.

Последняя строка вычисления y будет m*x + z, что эквивалентно 0*2 + 12. Это и объясняет, почему выводится число 12 при запуске вашей программы.
ИК
Игорь Котрухов
25 860
Лучший ответ
Улугбек Халмирзаев Большое спасибо Сергио
 int x = 12; // x == 12
int y = 5; // y == 5
int z = x / y; // z == 2 - целочисленное деление c отбрасыванием дробной части
int m = x % 2; // m == 0 - остаток от деления 12 на 2
int n = x; // n == 12
x = z; // x == 2
z = n; // z == 12
y = m*x + z; // 0 * 2 + 12 == 12
Улугбек Халмирзаев Спасибо вам Андрей, за помощь
14,4
12
5
2
Потому что
Улугбек Халмирзаев Ты абсолютно прав, в этом то и есть вся суть, но я её не улавливаю.
Вообще, ты очень кратно и точно подобрал слова, к данной проблеме. Ты, возможно, даже не представляешь как это было, прям в самую точку.