我遇到了一些我认为很奇怪的事情。测试程序
int main(int argc, char* argv[])
{
cout<<"hello"<<endl;
long unsigned l = 0x12345678;
long long unsigned ll = 0x12345678;
cout<<sizeof(l)<<endl;
cout<<sizeof(ll)<<endl;
};
输出是:
hello
4
8
那里没有惊喜。的long int
大小为 4 个字节,而long long
的大小为 8 个字节。但是,当我更改它以便分配 long long
long long unsigned ll = 0x123456789;
在编译时我得到
error: integer constant is too large for "long" type
现在,如果我使用选项强制构建 64 位,那么同样的测试会-m64
编译。我做错了什么还是这是 GCC 中的错误?