2014-10-09 57 views
1

我要檢查標誌值檢查標誌值時,我只有INTS值:如何只用整數和標準數學

enter image description here

所以,當我有int x = 54這意味着它是,但我正在做共享點聲明性的自定義操作,而無法創建標誌代碼等。我只能做簡單的表達式,不使用枚舉。

所以現在我每天都會收到int monday = 32

所以我的問題是:

我如何檢查54標誌32,也可以是數學方法或一些簡單的algoritm用簡單的循環

UPDATE:

參考安德魯·惠特克

enter image description here

去與錯誤

Failed to translate expression '(workDaysValueInt & 32)==32' because of the following error: Logical operations allow only boolean data types.

`

有趣的是,當我使用的原始數據,例如(54 & 32)== 32它在所有

回答

3

沒有錯誤如果我理解正確,您應該可以使用按位&並將結果與​​您檢查的一週中的某天進行比較:

int Monday = 32; 
int days = 54; 

bool hasMonday = (days & Monday) == Monday; 

下面這個樣子:

110110 
& 100000 
    ------- 
    100000 

這部作品的原因是,當你使用整數作爲標誌(並結合使用逐|標誌),用一個&操作的結果如果標誌值包含該標誌,標誌值將會產生你所要做的,從某種意義上說,剝離出值中包含的其他信息。

+0

你的回答是絕對正確的......但是,當我使用變量時,出現以下錯誤:「無法翻譯表達式」(workDaysValueInt&32)== 32',因此有什麼奇怪的結果: 邏輯操作只允許布爾值數據類型「。 – 2014-10-09 21:40:07

+0

這可能是一個共享點的問題...我害怕我不太瞭解共享點 – 2014-10-09 21:41:58

+0

我更新問題根據你的答案女巫在某種方式是好的 – 2014-10-09 21:46:30