Какая-то функция существует sleep для float в C?

Мой вопрос был, если вы знали какую-то функцию, которая делала бы то же самое что sleep для 0.5 или 0.25 секунд. А именно, если существовало нечто похожее sleep(0.25); так как функция sleep оно не функционирует, потому что он только стоит для целых чисел.

3
задан 27.12.2016, 05:49
0 ответов

Стой для целых чисел, потому что он реализует паузы с разрешением секунд, так что: для того, чтобы использовать другой тип аргумента?

К счастью, у тебя есть несколько выборов, всех в стандарте POSIX:

#include <unistd.h>

int usleep(useconds_t usec);

что использует микросекунды, или

#include <time.h>

int nanosleep(const struct timespec *req, struct timespec *rem);

struct timespec {
  time_t tv_sec;        /* seconds */
  long   tv_nsec;       /* nanoseconds */
};

Наблюдай, что он использует наносекунды: 1000000 наносекунд = 1 миллисекунда.

Предупреди, что, в обоих случаях, точность с трудом будет точно попросившей; всегда ты будешь в милость груза работы системы, Ваши часы хардвер... А именно, пауза всегда будет чем-то большим, чем попрошенная.

Я ИЗДАЮ

Функция usleep( ) она была удалена из последних POSIX; рекомендует использовать вторую, nanosleep( ).

3
ответ дан 03.12.2019, 17:58

Sleep() это функция, которая получает целую стоимость определять время ожидания в миллисекундах. Поскольку, если ты хочешь, он состоит в том, чтобы определять часть секунды, только ты должен вычислять этот фрагмент времени:

Sleep( 1000 ); // 1 segundo(1.0)
Sleep( 500 ); // 1/2 segundo (0.5)
Sleep( 250 ); // 1/4 segundo (0.25)

следовательно, только умножь твою десятичную стоимость на 1000:

Sleep( (0.25)*1000 ); // 250
1
ответ дан 03.12.2019, 17:58
  • 1
    Первоначальный вопрос был с функцией " sleep" POSIX, у не которого есть Microsoft " Sleep" –  26.12.2016, 23:43

Ты мог бы пере-осуществлять Sleep для того, чтобы ты работал в секунды и не в миллисекундах и где там, если ты смог перемещать его десятичные числа

void  SleepEx(float seconds)
{
  DWORD miliSeconds=seconds*1000;
  Sleep(miliSeconds);
}

int main()
{
    SleepEx(0.5);
    cout<<"Programa terminado"<<endl;
}
0
ответ дан 03.12.2019, 17:58