最近一直也都比较忙,也没咋更新,后面尽量争取一星期更新一次,把我实际中遇到的问题,都跟大家分享下,避免走弯路。
最近写了一个程序,里面用到了long类型的数据,在windows 64位系统下,运行程序正常,可以获取正确的数据,但是在linux 64位系统下,就出现了问题。今天正好抽个时间,验证以下。
windows 64位系统下
环境:vs2019 msvc64位编译器
测试代码:
int n1 = sizeof(int);
int n2 = sizeof(long);
int n3 = sizeof(long long);
int n4 = sizeof(float);
int n5 = sizeof(double);
qDebug()<<"sizeof(int):"<<n1<<
"sizeof(long):"<<n2<<
"sizeof(long long):"<<n3<<
"sizeof(float):"<<n4<<
"sizeof(double):"<<n5;
运行后,打印的结果如下图:

linux 64位系统下
环境:qt5.15.2 gcc 64位编译器
上述的测试代码,在linux 64位中运行后,打印的结果如下图所示:

尴尬,long类型在windows和linux系统下,采用的都是64位的编译器,结果竟然不一样。其他系统没有进行测试,暂不清楚。后来找到了一个图表,也可以参考下:

所以:在以后编写跨平台的程序的时候,尽量避免是用long类型。