【C语言】不同在线代码运行环境及编译器版本32位和64位下的sizeof返回值不同问题

  • Post author:
  • Post category:其他


在这里插入图片描述

原题在此,按照一般思路sizeof获取某个数据类型所占用空间的字节数,struct结构体计算要遵循字节对齐原则。

在这里插入图片描述

转载:https://www.runoob.com/w3cnote/struct-size.html

int整型一般情况默认占4字节,所以需要放在4的整数倍地址(4,8,12······),char型占1字节,char a[3]只有3字节,所以需要补一位让int b[2]的首地址放在4上。所以sizeof(struct b)字节数为1

3+1+4

2=12,然后sizeof(12)=4(12是整型)。

在这里插入图片描述

本来皆大欢喜,但是我用的vs2010 express是安装在虚拟机中,一般情况都是用在线代码运行看结果。一般是用下面这个网站。

https://www.dooccn.com/c/

但是同样的代码却是不一样的结果。

在这里插入图片描述

后面又换了菜鸟工具

https://c.runoob.com/compile/11/

在这里插入图片描述

和c语言网的在线环境运行

https://www.dotcpp.com/run/

在这里插入图片描述

三个在线网站输出结果都是12 8,令我百思不得其解,后续想到可能是编译器不同导致结果不同,找了一个可以换编译器版本的网站。

https://code.y444.cn/gcc

发现在gcc32的编译器环境下结果是12 4,gcc64的编译器环境下结果是12 8

在这里插入图片描述

且需要把”%d”改成”%ld”,即输出长整型数。

在这里插入图片描述

最后,这篇文章很详细的阐述了32位和64位编译器环境下sizeof返回的值

https://blog.csdn.net/xunfeng13/article/details/51011509



版权声明:本文为qq_45196785原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。