2016-01-17 1 views
-2

Я просто не знаю, что означает эта линия .:Определения переменных с условием без тройного оператора

a = b%4 == 0 && b%100 != 0 || b%400 == 0; 
+1

Если б этого числа года, а является 'true', если б високосный –

+0

Вы должны дать K & R лучше читать. –

+0

Это означает, что автор слишком некомпетентен и ленив, чтобы добавить достаточные скобки, чтобы сделать выражение понятным для чтения и легко отлаживать. –

ответ

2

Это выражение было бы более удобным для чтения с дополнительными скобками:

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; 
    } 
} 
+0

Я понимаю это сейчас, спасибо за ваше время – Pruzo

0

A = верно, если

b%4 == 0 
&& 
b%100 !=0 

OR 

b%400 == 0 

A = верно, если B является високосным. A = false, если B не является високосным годом.

У нас было это 2 года назад :)

+0

Если я использую реляционные операторы А может быть только 1/0? например "a = 2 * 4 == x" a будет 1, если x == 8? – Pruzo

+0

Да, A может быть только False \ True 0 \ 1 –

+0

a = 2 * 4 == x будет true, если (x == 8) и false if (x! = 8); –

Смежные вопросы