Почему код выглядит именно таким образом?

Задача - Вывести на экран все натуральные числа, меньшие заданного N, сумма квадратов цифр которых кратна 7, не понимаю строку while(s += (t % 10) * (t % 10), t /= 10); Что это могло бы значить?


int main() {
unsigned int i,n,s,t;

printf("введи n = ");scanf("%d", &n);

for(i=1; i < n; ++i) {
   s = 0;
   t = i;
while(s += (t % 10) * (t % 10), t /= 10);

   if(s % 7 ==0) printf("%d ", i);
}
return 0;
}

Ответы (1 шт):

Автор решения: Harry
while(s += (t % 10) * (t % 10), t /= 10);

Здесь применен оператор "запятая", т.е. выполняются две инструкции, результат равен результату последней.

Сначала выполняется

s += (t % 10) * (t % 10)

т.е. к s прибавляется квадрат последней цифры t. Затем

t /= 10

t уменьшается в 10 раз. И результат деления используется как условие while - т.е. цикл завершается, если t становится нулевым... Тело цикла пустое.

→ Ссылка