常量 int 和指示它的指针的问题

问题描述 投票:0回答:1

我现在正在学习的书教了我像预期的那样,但是 repl.it 将结果显示为输出

请告诉我为什么会出现这个结果。 谢谢你。

**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;
     }
c pointers constants replit
1个回答
0
投票

为了更改声明为

const
的变量的值,您放弃了
const
。这使得您的程序具有未定义的行为,并且您不应该期望该程序有任何特定的输出,无论是 999 还是 666。它可能是 123 甚至崩溃。

书中提到的期望没有任何价值,最好买一本更好的书。

权威 C 书指南和列表

如果您的书在该列表中,我认为它有勘误表或更新版本,其中该缺陷已得到纠正。

© www.soinside.com 2019 - 2024. All rights reserved.