从const int转换为int给出了奇怪的结果.任何人都可以解释奇怪结果的原因

kri*_*ish 0 c c++

当我尝试下面的代码时,我得到了奇怪的结果.我试图通过使用指针来改变常量的值.但是当我输出结果指针值和原始变量变量值时,它给出了两个不同的值.任何人都可以解释究竟发生了什么.显式转换发生了吗?

int main()
{
    int *p ;
    const int a = 20;
    p=(int *)&a;
    *p = *p +10;
    cout<<"p is"<<*p<<"\na is"<<a;
}
Run Code Online (Sandbox Code Playgroud)

输出:p是30 a是20

oua*_*uah 5

C和C++都说任何修改用const限定符声明的对象的尝试都会导致未定义的行为.

因此,a对象是const限定的,该*p = *p +10;语句调用未定义的行为.