2016-01-17 56 views
-2

我只是不知道這是什麼行表示:變量定義與條件不三元操作

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

如果b爲一年數,一個是TRUE;如果b是一個閏年 –

+0

你應該給K&R更好的讀取。 –

+0

這意味着作者太無能,並且懶惰地添加足夠的括號以使表達式清晰易讀且易於調試。 –

回答

2

這種表達會更可讀與額外的括號:

a = ((b % 4 == 0) && (b % 100 != 0)) || (b % 400 == 0); 

它是公曆閏年測試:

b是閏年,如果它是4的倍數,除非它是100的倍數,或者它是400的倍數。

舉例:2016是閏年,2000也是,但1900不是,而2100不會是閏年。

||&&運算符是快捷邏輯運算符,分別爲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是閏年。 如果B不是閏年,則A = false。

我們2年前有這個:)

+0

如果我使用關係運算符A只能是1/0?例如如果x == 8,「a = 2 * 4 == x」a將爲1 – Pruzo

+0

是的,A只能是False \ True 0 \ 1 –

+0

a = 2 * 4 == x如果是(x == 8)則爲true,如果爲(x!= 8)則爲false。 –