C和C++的一处小知识点(小坑)


在C语言中

void main(){
    const int i = 0;
    int *j = (int *)&i;
    *j = 1;
    printf("%d,%d", i, *j);
    system("pause");
}

结果输出为1,1
在C++中

#include<iostream>
using namespace std;
int main(void){
    const int i=0;
    int *j = (int *)&i;
    *j = 1;
    printf("%d,%d", i, *j);
    system("pause");
    return 0;
}

结果输出为0,1
 
为什么同样的代码C和C++输出结果不一致?
原因:
  C语言const变量在运行时改变了是可以再次读出改变后的值的;
  C++中const变量在编译的时候已经确定了;
  同一个地址,即同一个变量。C++中const变量确实别改变了。i的值没有更新而已。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/281546.html

(0)
上一篇 2022年8月22日
下一篇 2022年8月22日

相关推荐

发表回复

登录后才能评论