求助c++的问题
c4droid吧
全部回复
仅看楼主
level 11
DMAXILY 楼主
有没有大神解释一下,这个程序最后为什么会这样。
2017年10月14日 03点10分 1
level 11
DMAXILY 楼主
代码
#include<iostream>
using namespace std;
int main(void) {
const int b = 5;
int *m = (int *)&b;
const int *c = &b;
cout << "const b: " << b << " " << &b << endl;
cout << " *m: " << *m << " " << m << endl;
cout << "const *c: " << *c << " " << c << endl;
*m = 7;
cout << "*m=7" << endl;
cout << "const b: " << b << " " << &b << endl;
cout << " *m: " << *m << " " << m << endl;
cout << "const *c: " << *c << " " << c << endl;
if (&b == m) {
cout << "m point to b";
if (b != *m)
cout << " but *m!=b";
}
return 0;
}
2017年10月14日 03点10分 2
编译优化导致 改一下b的声明吧 volatile const int b = 5;
2017年10月14日 08点10分
不过也是你自己违反自己的规则,都定义为const了,还强行修改,但是编译器认为既然b是const的,就是按常量对待,直接优化掉
2017年10月14日 08点10分
@不知者来此 谢谢大神
2017年10月14日 10点10分
1