如果没有 -O2,此代码将打印84 84
,带有 O2 标志的输出为84 42
。gcc 4.4.3.
该代码是在 64 位 Linux 平台上编译的。为什么以下代码的输出不同?
请注意,使用 -Os 编译时,输出为0 42
#include <iostream>
using namespace std;
int main() {
long long n = 42;
int *p = (int *)&n;
*p <<= 1;
cout << *p << " " << n << endl;
return 0;
}