Является ли поведение этого кода хорошо определенным?
#include <stdio.h>
#include <stdint.h>
int main(void)
{
void *ptr = (char *)0x01;
size_t val;
ptr = (char *)ptr + 1;
val = (size_t)(uintptr_t)ptr;
printf("%zu\n", val);
return 0;
}
Я имею в виду, можем ли мы назначить некоторый фиксированный номер указателю и увеличивать его, даже если он указывает на какой-то случайный адрес? (Я знаю, что вы не можете разыгрывать его)