Member 12636371 Ответов: 1

Как мне получить выход 300? Из этого кода?


#include<stdio.h>
main()
 {
    short int x;
    unsigned char *p=&x;
    *p=44;   //write 44 into first byte x
    *(p+1)=1;      //write 1 into second byte of x
    printf("%d:,x);
}


Что я уже пробовал:

Я так и не смог понять, как получается 300.

1 Ответов

Рейтинг:
2

CPallini

Потому что ваша архитектура с обратным порядком байтов[^].

Использование указателя, который вы храните 44 на адрес X' и 1 по адресу x' + 1. Отсюда и ценность x (двухбайтовое целое число) тогда 1 * 256 + 44 = 300.