2

次のように 2 つuint8_t(0x00 と 0x01) を組み合わせて 1 つuint16_tにすると、メモリ内で連続して組み合わせると 0x0001 の値が得られると思います。代わりに、0x0100 = 256 を取得します。これには驚いています。

#include <stdio.h>
#include <stdint.h>

int main(void){

    uint8_t u1 = 0x00, u2 = 0x01;
    uint8_t ut[2] = {u1, u2};
    uint16_t *mem16 = (uint16_t*) ut;

    printf("mem16 = %d\n", *mem16);

    return 0;
}

私の現在の C メモリの理解で見逃していることを誰か説明してもらえますか? ありがとうございました!:-)

4

2 に答える 2