キャスト演算子と sizeof 演算子

  コードを書く上で重要な演算子

アルゴリズムとは関係しませんが、どちらも重要な機能を持っています



  キャスト演算子



( type-name ) cast-expression において、

型キャストが行われると、コンパイラは cast-expression を type-name で指定されている型として扱います
(型キャストはスカラー型のオブジェクトを別のスカラー型に変換するときに使います)

キャストについては、プログラマが遭遇するコンパイル時のエラーや警告に対応する場合に最も使用頻度が高いと思います。あまり深く考えずに、「指定された型で使用するよう促された時に利用する作法」だと思って使って下さい。

それ以外では、メモリ上の任意の位置にあるアドレスデータから実体を参照する場合に意図的に使用するぐらいです

Visual C++ では、すべての数値型とポインタが スカラー型 とみなされます
これに対して、「非スカラー型」は、集合型または複合型と呼ばれ、C/C++ では、
構造体型、共用体型、または配列型のいずれかです



  sizeof 演算子

sizeof 演算子は、オペランドと同じ型のオブジェクトを格納するのに必要なメモリ量をバイト単位で示します

sizeof ( type-name )

オペランドには、識別子か型キャスト式 (かっこで囲んだ型指定子) のどちらかを指定します。sizeof 演算子を配列識別子に使うと、結果は配列全体のサイズになります。sizeof 演算子を構造体または共用体の型の名前や識別子に適用すると、結果は構造体または共用体の実際の現在のバイト数になります

  
char szBuffer[128];
char *lpBuffer;
lpBuffer = szBuffer;
struct MY_STRUCT {
	int a;
	int b;
	char c[12];
} ms;

printf( "%d\n", sizeof( char ) );
printf( "%d\n", sizeof( int ) );
printf( "%d\n", sizeof( long ) );
printf( "%d\n", sizeof( float ) );
printf( "%d\n", sizeof( double ) );

printf( "%d\n", sizeof( char * ) );
printf( "%d\n", sizeof( int * ) );
printf( "%d\n", sizeof( long * ) );
printf( "%d\n", sizeof( float * ) );
printf( "%d\n", sizeof( double * ) );

printf( "%d\n", sizeof( szBuffer ) );
printf( "%d\n", sizeof( lpBuffer ) );
printf( "%d\n", sizeof( MY_STRUCT ) );
printf( "%d\n", sizeof( ms ) );

------------------------------------------------
1
4
4
4
8
4
4
4
4
4
128
4
20
20
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ