Почему значение выражения 3/5*5 в C++ = 0?
Почему значение выражения 3/5*5 в С++ = 0? Ведь в зависимости от расстановки скобок ответ либо 0,12 либо 3. Откуда вообще берется 0?
Код прилагаю.
#include <iostream>
#include <string>
using namespace std;
float c;
int main()
{
c = 3 / 5 * 5;
cout << c;
}
Ответы (1 шт):
Для двух целых чисел - 3 и 5 - и деление целочисленное, т.е. дающее целое число путем отбрасывания дробной части действительного результата.
Т.е. от 0.6 отбрасываем 0.6 и получаем 0.
Ну, а 0 на что ни множь...
А порядок выполнения операторов - именно такой, как вы его записываете. Раз скобок нет - то сначала выполняется деление, потом умножение.
Если хотя бы один из операндов будет с плавающей точкой - деление будет "обычное", дающее ожидаемый вами результат.
Уточнение для альтернативно одаренных: операнд - данной конкретной операции деления! А то еще кто-то начнет прикапываться, что если в другой программе написать операнд с плавающей точкой, то это не подействует на рассматриваемую нами операцию...