Автоматическая перезагрузка с целью по вашему выбору. В этом случае цель _self
устанавливается каждые 5 минут.
300000 миллисекунд = 300 секунд = 5 минут
при 60000 миллисекунд = 60 секунд = 1 минута .
Вот как вы это делаете:
<script type="text/javascript">
function load()
{
setTimeout("window.open('http://YourPage.com', '_self');", 300000);
}
</script>
<body onload="load()">
Или это, если это та же страница, чтобы перезагрузить себя:
<script type="text/javascript">
function load()
{
setTimeout("window.open(self.location, '_self');", 300000);
}
</script>
<body onload="load()">
Ваш лучший выбор - это умножение на 10 и сложение значения. Вы можете выполнить простую проверку следующим образом:
assert(digit >= 0 && digit < 10);
newValue = (oldValue * 10) + digit;
if (newValue < oldValue)
{
// overflow
}
Для предотвращения переполнения:
if ((0 <= value) && (value <= ((MAX_INT - 9) / 10))) {
return (value * 10) + digit;
}
Вместо MAX_INT вы можете использовать std :: numeric_limits
или подобное, чтобы поддерживает типы, отличные от int.
assert(digit >= 0 && digit < 10); newvalue = 10 * oldvalue; if (oldvalue < 0 ) { newvalue -= digit; } else { newvalue += digit; } // check for overflow SGN(oldvalue) == 0 || SGN(newvalue) == SGN(oldvalue)
Вот лучший и более пуленепробиваемый реализация, чем тот, который был принят в качестве ответа, который также быстрый:
#include <climits>
#include <cassert>
unsigned int add_digit(unsigned int val, unsigned int digit)
{
// These should be computed at compile time and never even be given a memory location
static const unsigned int max_no_overflow = (UINT_MAX - 9) / 10U;
static const unsigned int max_maybe_overflow = UINT_MAX / 10U;
static const unsigned int last_digit = UINT_MAX % 10;
assert(digit >= 0 && digit < 10);
if ((val > max_no_overflow) && ((val > max_maybe_overflow) || (digit > last_digit))) {
// handle overflow
} else {
return val * 10 + digit;
}
assert(false);
}
Вы также должны быть в состоянии сделать это в встроенной функции. Проверка переполнения почти всегда будет короткая цепью после первого сравнения. Пункт после &&
- это просто так, чтобы вы могли (в случае 32-битного целого числа дополнительного вмешательства) добавляют 5 до конца 429496729, но не 6.