C ビットフィールド 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(ビットフィールド)
(ビットフィールド)
30行: 30行:
 
ビットフィールドには他にも制限があり、int型より大きいサイズのbit数の指定はできません。したがって、
 
ビットフィールドには他にも制限があり、int型より大きいサイズのbit数の指定はできません。したがって、
  
 +
<syntaxhighlight lang="cpp">
 
unsigned int bf1_yflag :33;
 
unsigned int bf1_yflag :33;
 +
</syntaxhighlight>
  
 
としても、32までしか使えないため、指定を無視して32bitに切り詰められます。
 
としても、32までしか使えないため、指定を無視して32bitに切り詰められます。
 +
  
 
bit値がint型のしきりをまたぐような大きさでは確保できません。例えば
 
bit値がint型のしきりをまたぐような大きさでは確保できません。例えば
  
 +
<syntaxhighlight lang="cpp">
 
unsigned int bf1_xflag :24;
 
unsigned int bf1_xflag :24;
 
unsigned int bf1_yflag :24;
 
unsigned int bf1_yflag :24;
 
unsigned int bf1_zflag :24;
 
unsigned int bf1_zflag :24;
 
unsigned int bf1_aaflag :24;
 
unsigned int bf1_aaflag :24;
 +
</syntaxhighlight>
  
 
とすると、1変数あたりで32-24=8で8ビットずつがあまるので、4つあつまると1byte節約できるようにも感じますが、実際には、int型の大きさをまたいでbit値を確保できないために詰めることができず、節約にはなりません。
 
とすると、1変数あたりで32-24=8で8ビットずつがあまるので、4つあつまると1byte節約できるようにも感じますが、実際には、int型の大きさをまたいでbit値を確保できないために詰めることができず、節約にはなりません。

2015年4月15日 (水) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス