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