Nanashi-soft○プログラマ専用○PSSuite開発○
◇PS Suite開発 -連想配列を使う方法-
●キャスト(型変換)は,原則として『(型名)変数』で可能です
例)sbyte型を int型に代入
sbyte a = 10;
int b;
b = (int)a;
ですが,これはあまり推奨しません
頭の中でビット演算がイメージできる人向けです
そうで無い人は,暗黙の型変換を使用しましょう
●暗黙の型変換
例)sbyte型を int型に暗黙の型変換で代入
sbyte a = 10;
int b;
b = a;
●暗黙の型変換が使える方向
ビルドしようとして,『暗黙的に変換できません』と表示されない全てのパターン(笑)
コンパイラが警告してくれますので,意識する必要はありません
以下の方向にだけ可能です
・よりビット数の大きい変数へ
・符号なし変数から,よりビット数の大きい符号付変数へ
・整数型から浮動小数点型へ
全部書くとこうなります
○short型に暗黙キャスト可能な変数
short←byte
short←sbyte
○ushort型に暗黙キャスト可能な変数
ushort←byte
・int型に暗黙キャスト可能な変数
int←byte
int←sbyte
int←short
int←ushort
○uint型に暗黙キャスト可能な変数
uint←byte
uint←ushort
○long型に暗黙キャスト可能な変数
long←byte
long←sbyte
long←short
long←ushort
long←int
long←uint
○ulong型に暗黙キャスト可能な変数
ulong←byte
ulong←ushort
ulong←uint
○float型に暗黙キャスト可能な変数
float←byte
float←sbyte
float←short
float←ushort
float←int
float←uint
float←long
float←ulong
○double型に暗黙キャスト可能な変数
double←byte
double←sbyte
double←short
double←ushort
double←int
double←uint
double←long
double←ulong
double←float
○decimal型に暗黙キャスト可能な変数
decimal←byte
decimal←sbyte
decimal←short
decimal←ushort
decimal←int
decimal←uint
decimal←long
decimal←ulong
※floatやdoubleからは暗黙キャストできない。理由はこれらの変数には演算誤差があるからだと思う
●キャスト時におかしくなるパターン
『(型名)変数』でキャストした場合,ビット数がはみ出たり,アンサイン型に負の数を代入したりするとおかしくなります(わかっていてやるなら構いません)
○ビット数がはみ出ると,上位が切り捨てられます
byte型は 8bitです。これに 16bitの ushort型を代入すると,上位 8bitが切り捨てられます
例)ushort型変数から byte型変数にキャスト
ushort a = 65535;
byte b;
b = (byte)a;
結果は b = 255になります
○符号付変数から,符号なし変数にキャストすると,符号ビットは無視されます
例)sbyte型から ushort型にキャスト
sbyte a = -1;
ushort b;
b = (ushort)a;
結果は b = 65535になります
この辺りは,ビット演算がわかっていれば当たり前の話ですが,わからない場合は暗黙の型変換だけを使うようにしよう。と言う話です
バグの原因になるので,カッコ付きキャストはしない習慣を身に着けましょう('-'*)
○TOP○プログラマ専用○PSSuite開発○