Почему этот код не вычисляет количество часов и секунд?
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 секунд
Читайте также:
- Спецификация Go: операторы сравнения
- Спецификация Go: операторы, приоритет операторов
- Спецификация Go: логические операторы, адресные операторы
Комментариев нет:
Отправить комментарий