Непонятки с указателем типа void* - C (СИ)

Формулировка задачи:

Всем привет. Имеем следующий, редко используемый в быту нормальных программистов, код:
#include <stdio.h>
 
int main() {
    int a = 0x11223344;
    char c = 0x77;     // or 0x88
    void *b = &a;
 
    printf("%p %p %p %p\n", *((char*)b + 3), *((char*)b + 2), *((char*)b + 1), *(char*)b);
 
    *((char*)b + 2) = c;
 
    printf("%p %p %p %p\n", *((char*)b + 3), *((char*)b + 2), *((char*)b + 1), *(char*)b);
 
    getchar();
    return 0;
}
Если c = 0x77
00000011 00000022 00000033 00000044 00000011 00000077 00000033 00000044
Если c = 0x88
00000011 00000022 00000033 00000044 00000011 FFFFFF88 00000033 00000044
Что мною упущено в теории, что так происходит при разных значениях "char c" ?

Код к задаче: «Непонятки с указателем типа void* - C (СИ)»

textual
for(char i=1;i;i++)
  printf(" %x %d %c",i,i,i);

11   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ