Технический ответ заключается в том, что оператор /
выдает целое число при задании двух целых чисел.Это вычисление выполняется независимо от присвоения переменной double
.
На самом деле do получает двойное значение в переменной total
, но оно равно 2,0, а не 2,5.При инициализации целое число 2 преобразуется в 2.0.
Ваши варианты, если вы хотите 2.5:
double total = num / 2.0;
double total = (double)num / 2;
Короче говоря, это не проблема синтаксического анализа, а одна изC ++ оператор семантики.Надеюсь, что это имело смысл.