首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

gcc跟vc中编译结果不一致,更改const的值

2012-10-05 
gcc和vc中编译结果不一致,更改const的值#include stdio.htypedef struct {int iint j} stint main(){

gcc和vc中编译结果不一致,更改const的值
#include <stdio.h>
   
  typedef struct {
   
  int i;
   
  int j;
   
  } st;
   
  int main()
   
  {
   
  const int n = 9;
   
  int *p = (int *)&n;
   
  printf("%d\n", n);
   
  *p = 5;
   
  printf("%d\n", n);
   
  const st t1 = {1, 2};
   
  st *t2 = (st *)&t1;
   
  printf("%d, %d\n", t1.i, t1.j);
   
  t2->i = 3;
   
  t2->j = 4;
   
  printf("%d, %d\n", t1.i, t1.j);
   
  return 0;
  }
这上面的代码gcc和vc当中编译结果不一致,求大神解释啊

[解决办法]
C里面的const是可以通过指针来改变内容的,C++则不可以!
VC默认的是C++编译器,gcc是C编译器
[解决办法]
结构体的那部分没看。但是n和*p那部分,vc和gcc运行结果是一样的。
实际上n也变成了5.但是一切使用n的表达式都是用的n=9.有点匪夷所思。编译器在另外什么什么别的地方保存了n的原值呢?
不过出现这个结果而没有报错,我觉得也可以理解。从p的角度和从n的角度看是不一样的。

热点排行