【发布时间】:2012-02-27 15:41:08
【问题描述】:
我遇到了一些我认为很奇怪的事情。测试程序
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
现在,如果我使用选项 -m64 强制进行 64 位构建,那么同样的测试会编译。我做错了什么还是这是 GCC 中的错误?
【问题讨论】:
标签: c++ gcc solaris sparc long-long