C言語の基礎
C言語の規格で、int型の大きさについて定められていることとして、正しいものはどれか。
- Aどの処理系でも32ビットと決められている
- B少なくとも16ビットあることだけが決められ、実際の大きさは処理系が決める
- CCPUの番地(アドレス)の幅と同じと決められ、64ビットのCPUでは64ビットになる
答えと解説を見る
正解:B. 少なくとも16ビットあることだけが決められ、実際の大きさは処理系が決める
C言語の規格は、intが少なくとも −32767〜32767 を表せること(つまり16ビット以上)だけを求め、実際の大きさは処理系(コンパイラと対象のCPUの組み合わせ)が決めます。16ビットのマイコン向けのコンパイラではintが16ビットのことがあり、多くのPCや32ビットのマイコンでは32ビットです。64ビットのLinuxやWindowsでもintは一般に32ビットのままで、ポインタが64ビットになります。決まった大きさの整数が必要なときは、stdint.h の int32_t などを使います。
- A. 32ビットは多くの環境での大きさですが、規格の決まりではありません。16ビットのintを使う処理系もあります。
- B. 正しい。規格は表せる範囲の下限だけを定め、実際の大きさは処理系が決めます。
- C. 64ビットのLinuxやWindowsでも、intは一般に32ビットです。