簡體   English   中英

在某些情況下使用按位與比較的更好風格?

[英]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.

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