请告诉我为什么会出现这个结果。 谢谢你。
**Output**
MAX=999
MAX=999
**Expected**
MAX=999
MAX=666
#include <stdio.h>
#pragma warning(disable : 4996)
int main(void) {
const int MAX = 999;
int *ptr;
ptr=(int*)&MAX;
*ptr=666;
printf("MAX=%d\n",MAX);
return 0;
}
为了更改声明为
const
的变量的值,您放弃了 const
。这使得您的程序具有未定义的行为,并且您不应该期望该程序有任何特定的输出,无论是 999 还是 666。它可能是 123 甚至崩溃。
书中提到的期望没有任何价值,最好买一本更好的书。
如果您的书在该列表中,我认为它有勘误表或更新版本,其中该缺陷已得到纠正。