Работа с условиями, плюсует вместо добавления.
- Войдите на сайт для отправки комментариев
Ср, 03/04/2013 - 17:58
if (rtc[2]+rtc[1] == AutoOff) {
AutoOff=0;
}
Вот такой простенький пример.
В AutoOff записывается время, например 1230.
В rtc[2] хранятся часы, а в rtc[1] минуты.
Следовательно если AutoOff совспадает с временем то сто-то происходит.
Но почему выше преведенный пример, вот тут rtc[2]+rtc[1] плюсует 2 фицры. Мне нужно просто необходимо вставить часы и минуты. Пробовал через точку rtc[2].rtc[1] Появляется ошибка компелации. Что делать?
Поскольку мы только догадываемся, как описан массив rtc, но как бы то ни было, таким образом сравнивать нельзя.
Самое простое, приводить всё к минутам и сравнивать минуты, например:
const int AutoOff = 12 * 60 + 30; byte rtc[3] = { 0, 12, 30 };Тогда сравнение может выглядеть как:
if( ( rtc[1] * 60 + rtc[2] ) == AutoOff ) { // Время пришло! } else { // Еще не вечер }Можно сравнивать и в текстовом формате, однако в моем варианте можно использовать сравнение как на равенство, так и больше/меньше, а с текстом так не получится. Разумеется нужно помнить, что часы и минуты повторяются с периодом в одни сутки ;) Т.е. 12:30 есть и сегодня и завтра и послезавтра и т.п.
if (rtc[2]+rtc[1] == AutoOff) { AutoOff=0; }Вот такой простенький пример.
В AutoOff записывается время, например 1230.
В rtc[2] хранятся часы, а в rtc[1] минуты.
Следовательно если AutoOff совспадает с временем то сто-то происходит.
Но почему выше преведенный пример, вот тут rtc[2]+rtc[1] плюсует 2 фицры. Мне нужно просто необходимо вставить часы и минуты. Пробовал через точку rtc[2].rtc[1] Появляется ошибка компелации. Что делать?
if ( (rtc[2] * 100 + rtc[1] ) == AutoOff ) { AutoOff = 0; }Для сравнения не обязательно умножать минуты на 60 , а часы на 24.
Прозрачнее умножать часы на 100.
А дни на 10000, месяцы на 1000000 .....
Уже и не говорю о годах, сами подберите количество нулей после единицы.
unsigned long приветствуется, если надо.
P.S.
Хотя обычно пишут >= или <= , а то условие иногда может и не выполнится.