在阅读一些C++代码时,我看到了一个类中的这一小行,并被它迷惑了:
bool x:1;
在调试版本中,我注意到'x'被初始化为'false',但是我找不到任何相关文档。有人能告诉我这个语法是做什么的吗?
2ul0zpep1#
它是一个位字段。请阅读c教科书中有关位字段内容。初始化到false是独立于声明的.是否由你的代码保证取决于你的代码(没有给出).C标准对于大小为1的整数和枚举位字段给编译器一些余地:在这样的字段中存储值1,你可以得到值-1。令人高兴的是,这仅适用于大小为1的字段,而不适用于类型为bool的字段。
false
1
-1
bool
1条答案
按热度按时间2ul0zpep1#
它是一个位字段。请阅读c教科书中有关位字段内容。
初始化到
false
是独立于声明的.是否由你的代码保证取决于你的代码(没有给出).C标准对于大小为1的整数和枚举位字段给编译器一些余地:在这样的字段中存储值
1
,你可以得到值-1
。令人高兴的是,这仅适用于大小为1的字段,而不适用于类型为bool
的字段。