64,648
社区成员
发帖
与我相关
我的任务
分享
const int i=0;
*(int*)&i=3;
cout<<i<<endl;
#include <iostream>
using namespace std;
int main()
{
const int i = 1;
volatile const int j = 1;
int* m = const_cast<int*>(&i);
*m = 2; // 改变i的值
int* n = const_cast<int*>(&j);
*n = 2; // 改变j的值
cout << i << endl; // 输出1,因为编译器进行了暂存优化,所以输出原值
cout << j << endl; // 输出2,关键字volatile不进行优化,输出新值
}
#include <iostream>
using namespace std;
int main()
{
const volatile int i=0;
i=2;//const告诉编译器这个变量在代码级上不能修改,所以编译器就不认同这句代码了
//希望lz认真看一下编译器的提示信息~~
*(int*)&i=3;//volatile告诉编译这个变量,每次读的时候必须从存放变量的地址读取,
//而不能从缓存读取,实质告诉编译器你丫别进行优化。
cout<<i<<endl;
}