| ア | イ | ウ | エ | オ |
| カ | キ | ク | ケ | コ |
| サ | シ | ス | セ | ソ |
| タ | チ | ツ | テ | ト |
| ナ | ニ | ヌ | ネ | ノ |
| ハ | ヒ | フ | ヘ | ホ |
| マ | ミ | ム | メ | モ |
| ヤ | ユ | ヨ | ||
| ラ | リ | ル | レ | ロ |
| ワ | ヰ | ヴ | ヱ | ヲ |
| ン |
| A | B | C | D | E |
| F | G | H | I | J |
| K | L | M | N | O |
| P | Q | R | S | T |
| U | V | W | X | Y |
| Z | 数字 | 記号 | ||
C/C++/C#/Delphiなどで、値型のサイズを取得する機能。
C/C++では予約語の一つであり、単項演算子である。つまりCにおいては、sizeofは関数ではなく演算子である。
sizeof(foo)のように使われることが多いが、演算子なので()は必ずしも必要ではない。sizeof fooで求めることができる。但しintのような「型」の場合や、C++11から追加された可変長引数のtemplateの場合は()が必要である。
結果はsize_t型で返される。
Cにおいては、sizeofは定数式ではない。C90までは定数式と考えても差し支えなかったが、C99では「可変長配列」が導入されたため、そうではなくなった。
int func(int n)
{
int array[n];
...
}
この関数中で「sizeof array」を求めた場合、理論上はsizeof(int)*nが求められる。しかしこの大きさは、実際に関数が呼ばれるまでは分からないため、定数式とならない。
従って、switch文のラベルなど定数式が要求される箇所にsizeofを使うことはできない。
C++においては、当初の仕様ではsizeofは定数式である。switch文のラベルにsizeofを書くことができる。
しかしC++ではC99の機能が積極的に取り込まれていることもあり、将来的に上述のような可変長配列がもし導入された場合、定数式ではなくなる。
規格では、整数型のサイズは、次のように定義されている。
sizeof(short) ≦ sizeof(int) ≦ sizeof(long)
C/C++では、このように大小関係のみが定義されており、実際のビット長などは定義されていない。
また仕様上、sizeof(char)は常に1であることが求められている。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます