C语言指针变量可以用指向此变量的指针修改其值?解决方法

C语言指针变量可以用指向此变量的指针修改其值?
void main(void)
{
 const int a=5;
 int *b=&a;
 printf("%d\n",a);
 *b=8;
 printf("%d\n",a);
}
网上看到的,但是仍不是很清楚,为什么?

------解决方案--------------------
说const是常量和认为这问题简单的同学们,基本上也就是入门的水平,他们的答案不可信。
7楼的答案基本正确,至少是符合大多数编译器基本原理的。编译器不同,编译处理的方法也略有不同。
有一个术语叫“常量折叠”,楼主可以先弄懂它。
------解决方案--------------------
常量折叠