Есть 2 функции.
unsigned int get_rand(void)
{
srand(time(0));
int a=rand();
label:
if (a>255)
{
a=a/3;
goto label;//да-да, извращение
}
}
И вторая
volatile unsigned int i, counter, value;
static void handler(void);
unsigned int
get_random(void)
{
struct itimerval x, y;
i = 0;
counter = 0;
value = 0;
x.it_interval.tv_sec = 0;
x.it_interval.tv_usec = 1;
x.it_value.tv_sec = 0;
x.it_value.tv_usec = 1;
if (setitimer(ITIMER_REAL, &x, &y) == -1)
{
perror("get_random()");
return 0;
}
signal(SIGALRM, handler);
while (counter < 8)
i++;
signal(SIGALRM, SIG_IGN);
if (setitimer(ITIMER_REAL, &y, (struct itimerval *) NULL) == -1)
perror("get_random()");
return value;
}
void
handler(void)
{
value = (value << 1) | (i & 0x1);
counter++;
i = 0;
signal(SIGALRM, handler);
}
Да, я согласен, первая весьма крива. Но с виду, обе работают - возвращают
случайное значение от 0 до 255
Спрашивается, какого хрена программа правильно работает при использовании
второй функции и неправильно при использовании первой.
кто-нибудь может объяснить, почему?
Ответ на:
комментарий
от asgard

Ответ на:
комментарий
от Lockywolf


Ответ на:
комментарий
от asgard

Ответ на:
комментарий
от asgard

Ответ на:
комментарий
от teferiincub
Ответ на:
комментарий
от Lockywolf

Ответ на:
комментарий
от teferiincub

Ответ на:
комментарий
от KRoN73

Ответ на:
комментарий
от Lockywolf

Ответ на:
комментарий
от teferiincub

Ответ на:
комментарий
от asgard

Ответ на:
комментарий
от Lockywolf
Ответ на:
комментарий
от KRoN73

Ответ на:
комментарий
от teferiincub

Ответ на:
комментарий
от Lockywolf

Ответ на:
комментарий
от Lockywolf
Ответ на:
комментарий
от Lockywolf

Ответ на:
комментарий
от teferiincub
Ответ на:
комментарий
от KRoN73

Ответ на:
комментарий
от teferiincub

Ответ на:
комментарий
от Lockywolf
Ответ на:
комментарий
от KRoN73
Ответ на:
комментарий
от UrbanSerj


Ответ на:
комментарий
от KRoN73
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от KRoN73
Ответ на:
комментарий
от KRoN73
Ответ на:
комментарий
от UrbanSerj

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Как лучше сделать низкоточные таймеры? (2021)
- Форум функция с ограничением по времени исполнения (2006)
- Форум потоки и сигналы. (2005)
- Форум Переход от LinuxThreads к NTPL (2004)
- Форум Обработка сигналов в линуксе (2017)
- Форум POSIX таймеры (2011)
- Форум Почему программа выключается? (2017)
- Форум помогите разобраться (2005)
- Форум проблема с execv (2009)
- Форум Обработчик таймера для переключения контекста (2016)