В чем проблема? Первая строка вывода является немедленной: 1/3 = 0,33333 ..., удаляя дробную часть это 0.
Для второй строки помните, что цикл for
переводится примерно так:
i=1;
while(i>0)
{
calls++;
i/=3;
}
Итак, при запуске i
равно 1; первая итерация while
выполняется, потому что i
, будучи 1, больше 0. calls
равно 0 и увеличивается на 1, таким образом, получается 1. i
делится на 3, поэтому до 0 (потому что дробная часть не вычисляется в целочисленном делении). Проверка состояния while
выполняется снова, но теперь i
равно 0, поэтому цикл не повторяется. calls
остается равным 1, и это значение выводится на экран.