我遇到了一些我认为很奇怪的东西。测试程序在sparc上使用gcc为long long整数赋值solaris
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 unsigned ll = 0x123456789;
在编译的时候,我得到
error: integer constant is too large for "long" type
现在这个相同的测试不编译,如果我用强制的64位版本选项-m64
。我做错了什么或者这是GCC中的错误?