Ожидается, что код, приведенный ниже для проверки подлинности, будет иметь определенное поведение реализации:
int is_little_endian(void) {
int x = 1;
char *p = (char*)&x;
return *p == 1;
}
Но возможно ли, что это может иметь поведение undefined на специально изобретенных архитектурах? Например, первый байт представления int
со значением 1
(или другим хорошо выбранным значением) будет значением ловушки для типа char
?
Как отмечено в комментариях, тип unsigned char
не будет иметь этой проблемы, поскольку он не может иметь значения ловушки, но этот вопрос относится конкретно к типу char
.