Значение константной переменной изменяется с помощью указателя

Выход следующей программы - 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;
}

Ответы на вопрос(2)

Ваш ответ на вопрос