2017-04-12 81 views
1

我正在用C++編寫一個程序,它必須儘可能少。我需要一些if/else語句的幫助。這是代碼:位技巧和魔法

if (lines & 1 << ((d & 1) * 30 + 5 * l + c)) { 
    cout << "Invalid"; 
} else { 
    lines |= 1 << ((d & 1) * 30 + 5 * l + c); 
} 

什麼我在這裏做的是:如果一個位被設置爲1,我清點東西,如果不是的話,我將其設置爲1 verifing有什麼辦法我可以結合2線,我驗證和我在哪裏設置位1在身體?

lines & 1 << ((d & 1) * 30 + 5 * l + c) 
lines |= 1 << ((d & 1) * 30 + 5 * l + c) 

我想象的是這樣的:

if (lines |= ....) 

而且它應該做的是:確認位爲1,進入如身體,如果它不是(或者它已經)做它1.

對不起,我可憐的英語和這個愚蠢的要求,但我想不出辦法做到這一點,它讓我瘋了。

P.S:有什麼網站/計算器,可以給我一個布爾公式,當我進入equasion?例如:3 .. = -1。我需要操作數和操作符。

+0

爲什麼你想在if體中結合兩條線? – jpo38

+0

關於三元運算符 – chbchb55

+0

@ jpo38,我希望它在字符方面儘可能小。 – aleeN1

回答

1
if (lines == (lines|= mask)) cout << "Invalid"; 
+0

這不是未定義的行爲嗎? –

+1

@MikeNakis:爲什麼要這樣呢? –

+1

,因爲您在同一個語句中修改和讀取變量。 –