C sizeof演算子 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(sizeof演算子)
 
1行: 1行:
 +
[[C PlusPlus#Cにもあった技術|C++]]へ戻る
 +
 +
 
※このページではC言語にも存在していたという意味で記事タイトルがC sizeof演算子になっていますが、<br />
 
※このページではC言語にも存在していたという意味で記事タイトルがC sizeof演算子になっていますが、<br />
 
[[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br />
 
[[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br />
 
<br />
 
<br />
 
== '''sizeof演算子''' ==
 
== '''sizeof演算子''' ==
 +
 
変数が利用しているメモリの大きさを知るための演算子です。演算子ですので、マクロや関数として変数の大きさが定義されるようなものではなく、sizeof演算子独自の動作によって、メモリの利用状態を取得しています。sizeof演算子によって返される数字はバイト単位の大きさを整数値で表現するものです。クラスや関数の大きさも取得できるので、かなり大きなサイズになる場合もありますが、せいぜいunsigned int型くらいで表現できる大きさ4GByteに十分収まる大きさだと思います。これ以上の大きさのクラスや関数が存在するとしたら、なんか作り方がおかしいとしかいいようがないですし、別の次元のプログラムになると思われます。そういった技術は独自に演算制御するプログラム言語の世界へと旅立つ必要があるのかなぁと想像します。たぶんそんな状況って無いと思いますけど。
 
変数が利用しているメモリの大きさを知るための演算子です。演算子ですので、マクロや関数として変数の大きさが定義されるようなものではなく、sizeof演算子独自の動作によって、メモリの利用状態を取得しています。sizeof演算子によって返される数字はバイト単位の大きさを整数値で表現するものです。クラスや関数の大きさも取得できるので、かなり大きなサイズになる場合もありますが、せいぜいunsigned int型くらいで表現できる大きさ4GByteに十分収まる大きさだと思います。これ以上の大きさのクラスや関数が存在するとしたら、なんか作り方がおかしいとしかいいようがないですし、別の次元のプログラムになると思われます。そういった技術は独自に演算制御するプログラム言語の世界へと旅立つ必要があるのかなぁと想像します。たぶんそんな状況って無いと思いますけど。
  
88行: 92行:
  
 
まめ知識になるかもしれませんが、1バイトのビット長は処理系によって異なるため'''CHAR_BIT'''に定義されていることになっています。1Byte = 8bitと決め打ちせずにビット数を求める場合は'''sizeof(int) * CHAR_BIT'''のように積を求めて値を取得するようにしましょう。sizeof(int) * 8としても、大抵の場合は問題にならないと思いますが、ソースを開示するようなサンプルには汎用性があった方が使いやすいかもしれません。誰が?… コピペする人が。なんじゃそりゃ。どうでもええですね。
 
まめ知識になるかもしれませんが、1バイトのビット長は処理系によって異なるため'''CHAR_BIT'''に定義されていることになっています。1Byte = 8bitと決め打ちせずにビット数を求める場合は'''sizeof(int) * CHAR_BIT'''のように積を求めて値を取得するようにしましょう。sizeof(int) * 8としても、大抵の場合は問題にならないと思いますが、ソースを開示するようなサンプルには汎用性があった方が使いやすいかもしれません。誰が?… コピペする人が。なんじゃそりゃ。どうでもええですね。
 +
 +
 +
[[C PlusPlus#Cにもあった技術|C++]]へ戻る

2017年5月29日 (月) 00:00時点における最新版



個人用ツール
名前空間

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