Получить все элементы div, которые имеют класс dog
, и построить массив из них.
Затем используйте метод every
массива, чтобы проверить состояние фона. Если это верно для всех из них, выполните свой код
const dogs = Array.from(document.querySelector('div.dog'));
if (dogs.every(d => d.style.backgroundColor === 'red')) {
console.log('do some code');
}
<div class="dog" style="background-color:red">DOG 1</div>
<div class="dog" style="background-color:red">DOG 2</div>
В действительности вы можете проверять переполнение только с unsigned
целыми и арифметическими числами:
unsigned a,b,c;
a = b + c;
if (a < b) {
/* overflow */
}
Поведение переполнения со знаком целых чисел не определено в C, но на большинстве машин вы можете использовать
int a,b,c;
a = b + c;
if (c < 0 ? a > b : a < b) {
/* overflow */
}
Это не сработает на машинах, которые используют какую-либо насыщающую арифметику
Целочисленное переполнение является каноническим примером «неопределенного поведения» в C (с учетом того, что операции с целыми числами без знака никогда не переполняются, вместо этого они определены для циклического перехода) . Это означает, что после того, как вы выполнили x + y
, если он переполнился, вы уже попали в шланг. Слишком поздно делать какие-либо проверки - ваша программа уже могла дать сбой. Думайте об этом как о проверке деления на ноль - если вы дождетесь, пока деление не будет выполнено, чтобы проверить, будет уже слишком поздно.
Таким образом, это означает, что метод (1) - единственный правильный способ сделать это. Для max
вы можете использовать INT_MAX
из
.
Если x
и / или y
могут быть отрицательными, тогда все сложнее - вам нужно провести тест таким образом, чтобы сам тест не мог вызвать переполнение.
if ((y > 0 && x > INT_MAX - y) ||
(y < 0 && x < INT_MIN - y))
{
/* Oh no, overflow */
}
else
{
sum = x + y;
}
Вам нужно только проверить один из них. Если x + y переполняется, оно будет меньше, чем x и y. Следовательно:
int sum = x + y;
if (sum < x) error;
должно быть достаточно.
На следующем сайте есть много информации о целочисленном переполнении:
Если вы хотите обрабатывать отрицательные числа, его можно расширить:
int sum = x + y;
if (y >= 0) {
if (sum < x) error;
} else {
if (sum > x) error;
}