欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

字符大小端aix linux,long, unsigned long不是跨平台的(慎用)

发布时间:2023/12/1 linux 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 字符大小端aix linux,long, unsigned long不是跨平台的(慎用) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

项目中用到long、long long等字段,遇到一些问题。先说得到的一些结论:

大小端:Windows、Linux是小端,AIX是大端。

sizeof(指针类型)=程序位数/8。

long、unsigned long不是跨平台的,一定要慎用。

自己写了程序测试各平台下(Windows、Linux、AIX),C++各基本类型的最大值、最小值,以及占用字节数。

#include

#include

using namespace std;

void checkEndian();

int main()

{

checkEndian();

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

return 0;

}

void checkEndian()

{

short int a=0x1122;

char* b = (char*)&a;

if(*b==0x11)

{

cout<

}

else

{

cout<

}

}

编译环境:

Windows(Win10):编译32位、64位

Linux(Redhat5.5):编译32位、64位

AIX(AIX5.3):编译32位、64位

测试结果:

从以上测试结果,可以总结几点:

大小端:Windows、Linux是小端,AIX是大端。

sizeof(指针类型)=程序位数/8。32位程序,指针类型占4个字节;64位程序,指针类型占8个字节。顺便提一句,8字节的指针,可以指向更多的地址,因而64位系统可以支持更大的内存。

最最重要的是:long、unsigned long不是跨平台的,一定要慎用。大多数时候(除Linux64、AIX64),long和int是一样的,unsigned long和unsigned int是一样的,用起来没有差别。所以,int不够用的时候,别用long,用long long。

总结

以上是生活随笔为你收集整理的字符大小端aix linux,long, unsigned long不是跨平台的(慎用)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。