良许Linux教程网 干货合集 32 位和 64 位单片机中整型变量有多大?

32 位和 64 位单片机中整型变量有多大?

问题:在嵌入式C中,int和long int变量的大小由什么决定?

答:int和long int变量的大小取决于编译器,而编译器的选择则间接取决于所使用的CPU位数。

描述

在实际情况中,嵌入式系统的整形变量的大小并不是由处理器架构、操作系统或编译器单独决定的。不同的处理器架构(例如51、ARM、x86、x64),不同的操作系统(例如FreeRTOS、Linux、Windows),以及不同的编译器(例如gcc、AC、clang)都会对整形变量的大小产生影响。然而,其中最重要的因素是所使用的编译器。

主要是处理器位数决定。(当然,目前我验证过的所有情况是由处理器位数决定,其他决定性因素有待考证)

首先,整型变量大小由编译器(编译)得来,而编译器首先会考虑编译环境(这个环境主要是CPU的位数)。

之前给大家分享过《用Keil验证8位和32位单片机变量占用空间大小》,其中就体现了8位和32位CPU中变量占用空间的大小。

验证

之前分享《用Keil验证8位和32位单片机变量占用空间大小》的内容,主要在Keil这个编译环境下,通过编译大小验证。

这其中是想描述Keil环境下CPU位数,以及大小端对变量占用空间大小的影响。

而最直接的办法则是通过sizeof得出大小,打印出来。

这里额外提一下sizeof 和 sizeof 的区别:

  • sizeof通常计算变量大小,strlen计算字符串长度
  • sizeof是运算操作符,strlen是函数
  • sizeof在编译的时候得出大小,strlen要考虑’\0字符的长度

例子源代码:

#include 

int main(void)
{
  printf"         char: %d\n" , sizeof(char));
  printf"    short int: %d\n" , sizeof(short int));
  printf"          int: %zd\n" , sizeof(int));
  printf"     long int: %d\n", sizeof(long int));
  printf"long long int: %d\n", sizeof(long long int));
  printf"        float: %d\n", sizeof(float));
  printf"       double: %d\n", sizeof(double));

  return 0;
}

大家可以试着用不同的编译环境试试上面这部分代码,看看有什么差别。

这里简单举例两个:

1.Keil MDK编译,直接下载在STM32中串口打印输出。

image-20230805230406624
image-20230805230406624

串口输出结果:

        char: 1
    short int: 2
          int: 4
     long int: 4
long long int: 8
        float: 4
       double: 8
image-20230805230420088
image-20230805230420088

2.在线编译器

这里我用的在线编译器,网址:

https://rextester.com/l/c_online_compiler_gcc

(复制到浏览器直接打开即可)

gcc编译:

image-20230805230423597

**
**

clang编译:

image-20230805230426766
image-20230805230426766

以及其他环境,输出情况都一样,因为是在同一台电脑(操作系统、CPU位数都一样)。

         char: 1
    short int: 2
          int: 4
     long int: 8
long long int: 8
        float: 4
       double: 8

如果你换到平台,可能结果就不一样了。通过对比各种结果,你自然会得出结论。

大家可以试试其他编译环境,在线编译器的话,可以参看我之前的推文:多款优秀的支持C、C++等多种语言的在线编译器

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部