日常我们的认知是在64位的机器上,int是4个字节,long是8个字节。但是在AIX,这个问题会更复杂一些:
AIX可能是为了向下兼容的目的,通过编译选项 -q64 来规定long长度
测试代码:
void TestInt()
{
int nTemp=0;
long lTemp=0;
long long llTemp=0;
printf("size of int is %d\n", sizeof(nTemp));
printf("size of long is %d\n", sizeof(lTemp));
printf("size of long long is %d\n", sizeof(llTemp));
return;
}
int main()
{
printf("Hello World!\n");
TestInt();
return 0;
}
有加-q64的话,long的长度为8,否则为4
同理,在变长参数中,没加选项的时候,%d和%ld可以通用; 如果加了选项,%ld和%lld可以通用