Значение константной переменной изменяется с помощью указателя
Выход следующей программы - 50 на gcc. Как это возможно, так как x - постоянная переменная, а * p - сам x, поскольку p - постоянный указатель, указывающий на значение в точке x. Где, как Turbo C дает ошибку компилятора. Это неопределенное поведение? пожалуйста, объясни.
#include<stdio.h>
int main()
{
const int x = 25;
int * const p = &x;
*p = 2 * x;
printf("%d", x);
return 0;
}