2012-08-06 82 views
4

在閱讀一些C++代碼,我看到了,並在一類這個小行迷惑:布爾結腸初始化

bool x:1; 

在調試版本,我注意到的「x」爲「假」初始化,但我找不到任何有關這方面的文件。任何人都可以告訴我這是什麼語法嗎?

回答

9

這是一個位字段。請閱讀C++教科書中的位字段。

初始化爲false是獨立於聲明。是否由你的代碼保證取決於你的代碼(沒有給出)。

C++標準爲編譯器提供了大小爲1的整數和枚舉位域的一些餘地:在這個字段中存儲值1,你可以得到值-1。令人高興的是,這僅適用於大小爲1的字段,並且不適用於類型爲bool的字段。