#include <stdio.h>
int main(){
const int a = 10;
*(int*)(&a) = 9; // modify a
printf("%d", a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么?
该计划将编译,但表现出不确定的行为,并可以输出9或10或别的东西,或可能崩溃谁知道.
当你说a是const,你承诺你不会尝试a直接或间接地改变价值,编制者可能做出某些假设.如果你违背承诺意外事情可能会发生.