边肖复习C语言的时候踩了很多坑。纠结的长型占4字节还是8字节?好了,今天我就通过这篇文章和大家分享一下我的详细想法。感兴趣的朋友可以跟随边肖去看一看。
今天复习C语言的时候踩到了一个有趣的坑。
#包含stdio.h
int main() {
printf('long int : %d\n ',sizeof(long));
返回0;
}
以上是我在IDE中使用的测试代码。当我执行它的时候,我的第一反应是,我会得到长度为4。
但实际结果如下图所示:
是的,没错。long的长度是8个字节。我觉得我知道的长整型long应该是4字节。
这和编译器有什么关系吗?
我随机用mingw32跑了一次,结果还是8。于是我替换了msvc32和64分别执行,运行下来的结果还是8个长度。
既然与系统位数、mingw、msvc无关,那就是系统环境。(因为没有安装WLS2),所以没有马上发现问题。
我现在的系统是MacOS,所以我继续在windows Pc上执行上面的程序。结果比较如下。(CLion,MinGW64都用)
在windows64环境下:
MacOS64环境:
根据上面的对比可以发现,在MacOS环境下,long的长度是8个字节,比windows多了4个字节。
long long在未使用的操作系统中占用的字节数如下:
linux64环境下long占用的字节位8间接说明macOS中long的字节长度也是8。(这是因为MacOS和Linux都是类Unix系统,但它们基于不同的内核)
因此,在编写跨平台应用程序时,如果使用long类型,就要考虑精度损失的问题,编写跨平台应用程序时尽量避免使用long类型。
参考文章:
long不同操作系统下占用的字节数。
到目前为止,C语言中的long类型是4字节还是8字节?文章到此结束。有关C语言中长字节的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。