Я просто не знаю, что означает эта линия .:Определения переменных с условием без тройного оператора
a = b%4 == 0 && b%100 != 0 || b%400 == 0;
Я просто не знаю, что означает эта линия .:Определения переменных с условием без тройного оператора
a = b%4 == 0 && b%100 != 0 || b%400 == 0;
Это выражение было бы более удобным для чтения с дополнительными скобками:
a = ((b % 4 == 0) && (b % 100 != 0)) || (b % 400 == 0);
Это испытание для високосного года в григорианском календаре:
b
- это високосный год, если он кратен 4
, за исключением случаев, когда он кратен 100
, или если он кратен 400
.
В качестве примера: 2016
високосный год, 2000
был тоже, но 1900
не было и 2100
не будет високосным.
Операторы ||
10 и &&
являются логическими операторами быстрого доступа, соответственно для условий OR и AND. Выражение эквивалентно следующему:
if (b % 4 == 0) {
if (b % 100 != 0) {
a = 1;
} else {
a = 0;
}
} else {
if (b % 400 == 0) {
a = 1;
} else {
a = 0;
}
}
Я понимаю это сейчас, спасибо за ваше время – Pruzo
A = верно, если
b%4 == 0
&&
b%100 !=0
OR
b%400 == 0
A = верно, если B является високосным. A = false, если B не является високосным годом.
У нас было это 2 года назад :)
Если я использую реляционные операторы А может быть только 1/0? например "a = 2 * 4 == x" a будет 1, если x == 8? – Pruzo
Да, A может быть только False \ True 0 \ 1 –
a = 2 * 4 == x будет true, если (x == 8) и false if (x! = 8); –
Если б этого числа года, а является 'true', если б високосный –
Вы должны дать K & R лучше читать. –
Это означает, что автор слишком некомпетентен и ленив, чтобы добавить достаточные скобки, чтобы сделать выражение понятным для чтения и легко отлаживать. –