4096 (шестнадцатеричный 0x1000) будет представлен в памяти (при условии 8-битных байтов, что довольно часто встречается в настоящее время) как:
[0x00, 0x00, 0x10, 0x00] (big-endian)
или
[0x00, 0x10, 0x00, 0x00] (little-endian)
Поскольку выраспечатывая его, используя% d, который ожидает целые числа, но передавая значение указателя разыменованного символа (т. е. char
) и увеличивая указатель перед разыменованием, вы напечатаете либо 0x00, либо 0x10, что составляет 16 в десятичном виде.Возможно, вам потребуется добавить приведение, чтобы разрешить оператор p = a
, поскольку вы смешиваете типы довольно свободно.
Так что да, я думаю, что вы правы.