![](/img/trans.png)
[英]What are the cases in which it is better to use unconditional AND (& instead of &&)
[英]Better style to use bitwise vs comparison in certain cases?
只是想知道編寫這樣的代碼是否更好/更有效:
if (bitset[index] & 1)
{
//do something
}
與:
if (bitset[index] == 1)
{
//do something
}
謝謝!
以上都不是。 從評論中,您正在談論諸如 C++ 的std::bitset
之類的東西,其operator[]
返回bool
。 通常,布爾值僅與其他布爾值一起使用布爾運算( &&
、 ||
、 !
等)進行運算。 將它與另一種類型的對象(例如整數 1)進行比較,或者應用整數算術運算,如& | + -
似乎很奇怪。 & | + -
等等。語言的轉換規則可以讓你這樣做,但它沒有多大的邏輯意義。
所以最慣用,也是最緊湊的版本是:
if (bitset[index]) {
// ...
}
如果在上下文中將測試視為相等比較更有意義,那么您可以:
if (bitset[index] == true) {
// ...
}
但對於大多數 C++ 程序員來說,這看起來是多余的。
從優化的角度來看,這一切都無關緊要; 任何合理的編譯器都會意識到它們都是等價的並同樣優化它們。 但是,一般來說,如果您正在做一些常見的事情,那么您通常會通過以最常見和慣用的方式編寫它來獲得最佳優化,因為這是編譯器最有可能處理好的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.