long类型在不同系统中使用的坑

文章指出在Windows64位环境下使用VS2019编译器,long类型占用的字节数与Linux64位环境下使用gcc编译器不同,导致跨平台程序可能出现问题。建议在跨平台编程时避免使用long类型以防止兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一直也都比较忙,也没咋更新,后面尽量争取一星期更新一次,把我实际中遇到的问题,都跟大家分享下,避免走弯路。

最近写了一个程序,里面用到了long类型的数据,在windows 64位系统下,运行程序正常,可以获取正确的数据,但是在linux 64位系统下,就出现了问题。今天正好抽个时间,验证以下。

  1. 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;

运行后,打印的结果如下图:

  1. linux 64位系统下

环境:qt5.15.2 gcc 64位编译器

上述的测试代码,在linux 64位中运行后,打印的结果如下图所示:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值