как правило, u_time является синонимом long, хотя это никто и не гарантирует.
но какое это имеет отношение к конкретной переменной, которая объявлена как unsigned short и содержит не unixtime, а число часов, судя по всему с начала суток?
во-первых там не время вообще, а часы. но хрен с ним, будем считать, что в часах хранятся секунды от начала суток. Хотя не трудно посмотреть что TDateTime это не unixtime, а DecoteTime возвращает целое ровное число часов, а не в секундах.
А во-вторых 5 в 18000 не приведется никак не зависимо от того, какой смысл имеют данные в переменной hours.
Код нерабочий в принципе. Так как целое число не может одновременно быть больше пяти и меньше шести, то всегда будет вызываться random(100) и ни одного реального теста этот код не пройдёт.
А это уже без разницы, там логическое и (&&), истина будет только если все части условия истинны, а если час больше пяти, то он не может быть меньше шести и наоборот.
Ну и если посмотреть код, выложенный на хабре, то видно, что этот рандом относится к цвету тревожной точки на экране, то есть вместо реального уровня тревожного сигнала с датчика будет отображён случайный уровень, но сама точка тревоги будет показана.
Даже не догадывался, что по Москва-реке к правительству московской области могут диверсанты приплыть. Перерыв скорее оставили для отладки о чем говорит название "hungrutest". Что за язык? :)
Комментарии
А жаль — такая рифма пропадает!..
И если это не фейк, созданный в Купертино и размещенный на серверах в Калифорнии (тм), то я офигиваю от такой квалификации программеров.
Можно проверить:
bool hungrytest = Hours && Hours > 5 && Hours < 6 && Minutes > 0 && Minutes < 30;
if (hungrytest){
MainData->ResolveMessage( что то пошло не так );
MainData->format C:;
}
else
MainData->ResolveMessage( heres2003 был прав );
Целое число не может быть одновременно больше 5 и меньше 6, потому что между 5 и 6 целых чисел нет.
hours && hours > 5 это тоже феерично, поскольку второе условие покрывает первое.
$ cat a.c
#include
int main()
{
unsigned short i;
for( i=0; i5 && i
Вижу, вы никогда с Unix time не имели дел.
Hours > 5 = Time Unix > 18000
Hours < 6 = Time Unix < 21600
Диапазон однако есть.
Hours описана не как u_time, а как unsigned short.
Целое число. Которое не может принимать значения между 5 и 6.
не может принимать значения между Hours 5 и Hours 6.
между 18000 секунд текущих суток и 21600 секунд текущих суток.
hungrytest = Hours(уже не 00ч. хотя я считаю что это лишнее) && Hours > 5(>18000 секунд текущих суток) && Hours < 6(< 21600 секунд текущих суток) && Minutes > 0(больше 0 секунд текущего часа) && Minutes < 30(меньше 1800 секунд текущего часа );
Машина видит эту строчку так.
для машины Hours это Time Unix
Ну можно уже взять и посмотреть описание переменных?
Поэтому, всё обрабатывается без конвертации, обрабатывается в Time Unix.
Хотя да, ты мне открыл глаза: я не подозревал что у нас в стране с программированием на столько все плохо.
ты тоже мне открыл глаза:
Time Unix для тебя как море из анекдота:
"папа а где море"
unsigned short Hours, Minutes,...
RightNow.DecodeTime(&Hours
Hours 5 = 18000
Hours 6 = 21600
"Breaks a TDateTime value into hours, minutes, seconds, and milliseconds.
DecodeTime breaks the object specified as the Time parameter into hours, minutes, seconds, and milliseconds.".
И где тут написано, что DecodeTime(). В 5 часов вернет Hours значение 18000? Ясно же сказано, что вернёт 5.
DecodeTime
в сравнении чисел и сравнении переменной времени
===
Ну вот, а там две даты, а не числа.
Но ты можешь это опровергнуть, написав кусок когда, в котором шорт и инт так преобразуются, что 18001 будет больше 5 и меньше 6.
Я вижу string(Hours);
string(Hours) это 10, но это не значит что Hours = 10!
когда string(Hours) = 10 то Hours = 36000
(к сожалению не имею под рукой инструментов и не могу выложить код)
Пысы:
к этой пикче каммент:
if hour ==5 {
будет выполняться не в 5:00, а до 6:00
}
как правило, u_time является синонимом long, хотя это никто и не гарантирует.
но какое это имеет отношение к конкретной переменной, которая объявлена как unsigned short и содержит не unixtime, а число часов, судя по всему с начала суток?
дни включает в себя часы,минуты,секунды,миллисекунды
часы включают в себя минуты,секунды,миллисекунды
минуты включают в себя секунды,миллисекунды
секунды включают в себя миллисекунды.
====
В этом разница работы с числами и временем.
Надеюсь я понятно объяснил.
что такое 18001, кстати?
#include
#include
int main()
{
time_t t = 18001;
if( t>5 && t
то ваша строчка
if( t>5 && t1450846800 && t
Вот когда она будет выглядеть так, тогда и поговорим. А пока там ищется целое число между 5 и 6.
Машина не вы и видит там целые числа равные текущему часу текущих суток :18000 и 21600
и видит, в отличии от вас, что 18000 меньше чем 21600
"дядя Петя, ты дурак?".
Там чистый код на Си.
именно на Си -> Hours > 5 , это значит > 18000
TDateTime RightNow = Time();
unsigned short Hours, Minutes, Seconds, Milliseconds;
RightNow.DecodeTime(&Hours, &Minutes, &Seconds, &Milliseconds);
выделенное тебе ни о чем не говорит?
папа а где море
а не полдесятого ?
более того, 1450852774 не может быть short int. Не уместится-с.
В общем то ситуация тупиковая.
Т.к. ты не владеешь сим предметом.
Последний раз:
Допустим время 5:15 (Unix 18900) это больше чем 5:00(Unix 18000) и меньше чем 6:00(21600)
Заметь, все числа целые.
А во-вторых 5 в 18000 не приведется никак не зависимо от того, какой смысл имеют данные в переменной hours.
Либо жду код, где в сравнении будет >5 и
а Hours часы в Unix формате
1450848600 это сегодня 5:30
*С 5:00 до 6:00
Ну и если посмотреть код, выложенный на хабре, то видно, что этот рандом относится к цвету тревожной точки на экране, то есть вместо реального уровня тревожного сигнала с датчика будет отображён случайный уровень, но сама точка тревоги будет показана.