2013-10-22 39 views
1
int sampleVariable; // declared and initialized and used elsewhere 

if (sampleVariable & 2) 
    someCodeIwantExecuted(); 

所以,如果我想手動操縱sampleVariable使if語句來計算真實與someCodeIwantExecuted()來執行我會做以下?基本的C位運算實例

sampleVariable |= (1 << 1); 

請記住,我不知道是什麼sampleVariable的價值,我想保留位相同的其餘部分。只要改變一下,這樣如果陳述永遠是真的。

+1

是的,你會這樣寫。也許沒有括號。 – 2013-10-22 23:07:28

+8

您也可以編寫'sampleVariable | = 2;',因爲這就是測試它的方式。沒有理由使用兩種不同的符號。 –

回答

0

該解決方案相當直接。

// OP suggestion works OK 
sampleVariable |= (1 << 1); 

// @Adam Liss rightly suggests since OP uses 2 in test, use 2 here. 
sampleVariable |= 2 

// My recommendation: avoid naked Magic Numbers 
#define ExecuteMask (2u) 
sampleVariable |= ExecuteMask; 
... 
if (sampleVariable & ExecuteMask) 

注:使用移軸風格在(1 << 1)時,確保該類型的1目標類型

unsigned long long x; 
x |= 1 << 60; // May not work if `sizeof(int)` < `sizeof(x)`. 
x |= 1ull << 60; 

匹配另外:考慮unsigned類型的優點。

// Assume sizeof int/unsigned is 4. 
int i; 
y |= 1 << 31; // Not well defined 
unsigned u; 
u |= 1u << 31; // Well defined in C.