c++学习----const常量折叠

//============================================================================
// Name        : Constant_folding.cpp
// Author      : gwwu
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
/* 1. i,j 地址相同,指向同一块空间
 * 2. i,j指向同一块内存,但是*j = 1修改内存后,
 *    按理说*j == 1, i 也应该==1,但是实验结果是为0.
 *    因为i是可折叠常量,在编译阶段对i的引用已经替换为i的值了
 *    也就是说 cout << i << endl; 在编译后就被替换为
 *    cout << 0 << endl;*/
#include <iostream>
using namespace std;

int main() {
    const int i = 0;
    int *j = (int*)&i;
    *j = 1;

    cout << "&i = " << &i <<endl;
    cout << "j = " << j << endl;
    cout << "i = " << i <<endl;
    cout << "*j = " << *j << endl;
    return 0;
}

编译运行:

&i = 0x28ff28
j = 0x28ff28
i = 0
*j = 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值