2012-08-06 87 views
4

在阅读一些C++代码,我看到了,并在一类这个小行迷惑:布尔结肠初始化

bool x:1; 

在调试版本,我注意到的“x”为“假”初始化,但我找不到任何有关这方面的文件。任何人都可以告诉我这是什么语法吗?

回答

9

这是一个位字段。请阅读C++教科书中的位字段。

初始化为false是独立于声明。是否由你的代码保证取决于你的代码(没有给出)。

C++标准为编译器提供了大小为1的整数和枚举位域的一些余地:在这个字段中存储值1,你可以得到值-1。令人高兴的是,这仅适用于大小为1的字段,并且不适用于类型为bool的字段。