質問

これは非常に簡単な質問です。MSVS2012でコンパイルされたときに、0x3412val em>結果が生成されると、次のことが注目されています。

unsigned char test[] = { 0x12, 0x34, 0x56, 0x78 };
unsigned char* ch = test;
unsigned int val = *ch | (*(ch+1) << 8);
.

iは、右側の参照されたChar Pointer *(ch+1)0x34 CHAR 値を生成する予定だと予想されます。値が間接参照される時点で、それは少なくとも2バイトを含むのに十分な大きさのタイプにすでに格納されているようです。

は、 C ++ 規格のどこかで指定されていますか?この暗黙のキャストがどのように起こるのか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top