У меня есть простая программа на C, которая позволит мне получить доступ ко всем байтам int. Я на 32-битной машине.При попытке доступа к отдельным байтам в C, почему я могу получить доступ к байтам вне диапазона типа?
int x = 1;
unsigned char* bytes = (unsigned char*)&x;
printf("Value: %d\n", bytes[10000]);
Я не понимаю, почему последняя строка печатает 99
или даже действительное утверждение. int
на моей машине должен иметь только 4 байта. Я бы предположил, что bytes
допустит только ключевые значения 0-3
.
Что я не понимаю?
«байты» - это переменная, а не полицейский. Дело не в разрешении или запрете чего-либо. –