C++地址强转为int输出


#include <iostream>
using namespace std;

int main()


{
    int a = 10;
    cout << (int)&a << endl;
}

为什么我将地址转为int输出会报错呢,别人的都没有报错?

尝试写为


#include <iostream>
using namespace std;
int main()

{
    int a = 10;
    cout << (long long int)&a << endl;
}

因为别人的编译系统是32位的,32位地址是4字节,可以转为int类型
而你的编译系统是64位的,64位地址是8字节,用int会溢出,要转为long long类型
cout << (long long )&a << endl;

报的是什麽错呢?
可能你的错误级别设置的高,别人是警告,你把警告设定为错误