Есть 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)