четверг, 21 мая 2020 г.

Правильно расставьте приоритеты

Почему этот код не вычисляет количество часов и секунд?

n := 43210 // время в секундах
fmt.Println(n/60*60, "часов и", n%60*60, "секунд")

43200 часов и 600 секунд

Ответ

Операторы *, / и % имеют одинаковый приоритет и оцениваются слева направо: n/60*60 совпадает с (n/60)*60.

Вставьте пару скобок, чтобы установить правильный порядок оценки.

fmt.Println(n/(60*60), "часов и", n%(60*60), "секунд")

12 часов и 10 секунд

Или еще лучше, используйте константу.

const SecPerHour = 60 * 60
fmt.Println(n/SecPerHour, "часов и", n%SecPerHour, "секунд")

12 часов и 10 секунд


Читайте также:


Комментариев нет:

Отправить комментарий