簡體   English   中英

C ++逐位與

[英]C++ bitwise AND for single bits

我只有一個關於C ++中按位與的簡單問題。 我將其用於單個位(a&8,a&4,a&2,a&1等),我想獲得布爾值作為回報(如果倉位上有1)。

我可以將它除以一個數字(例如(a&8)/ 8),但是在我的代碼中看起來確實不是很好(特別是我正在使用數組和變量的長名稱)。

還有其他更好的編碼方法嗎?

提前致謝。

如果要明確,請與0進行比較:

const bool maskSet = (a & 8) != 0;

這是我所知道的最干凈的方法。 除法很奇怪,因為除法運算仍然使從整數到布爾值的隱式轉換成為可能。 比較運算符使其明確。

最好的方法是將表達式轉換為布爾值。 這樣可以提高可讀性:

bool result;
result = 0 != (a & 8);

可能不需要與0進行比較,因為編譯后的代碼將在變量b寫入truefalse 但這避免了如下警告:

warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)

如果您不喜歡Yoda語音,則順序或比較參數可能會顛倒。 這種樣式可以幫助避免C編程語言中的意外賦值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM