次のプログラムの出力は、gcc で 50 です。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;
}