簡體   English   中英

我可以或應該制作布爾位字段嗎?

[英]Can or should I make bools bit fields?

這是合法的還是推薦的? 我讀到你應該只使用整數類型作為位域,但這適用於布爾類型嗎? 這可以嗎,或者這是不好的做法或未定義的行為?

struct MyStruct {
    // ...
    bool SomeBooleanProperty:1;
    // ...
};

可以...我制作布爾位字段嗎?

<\/blockquote>

是的。 它是 3 個定義明確的選擇之一。

位域的類型應為_Bool<\/code> 、 signed int<\/code> 、 unsigned int<\/code>或其他一些實現定義的類型的合格或非合格版本。 是否允許原子類型是實現定義的。 C17dr § 6.7.2.1 5


....我應該制作布爾位字段嗎?

是的,如果它使代碼更清晰。

注意:這是一個不使用int x:1<\/code>的地方,因為如果x<\/code>具有值 [0,1] 或 [-1,0],它是實現定義的。 分別對 [-1,0]、[0,1]、[0,1] 使用有signed int x:1<\/code>或unsigned x:1<\/code>或_Bool x:1<\/code> 。

對於x:1<\/code> ,在分配超出范圍的值時, bool<\/code>的功能規范確實比有signed int<\/code>更清晰。 評論<\/a>。 對於unsigned<\/code> ,僅復制 LSbit。

暫無
暫無

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

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