在c程序上的8、16、32和64位微控制器上,int和指针的字长、大小是多少?

在c程序上的8、16、32和64位微控制器上,int和指针的字长、大小是多少?,c,embedded,embedded-linux,microcontroller,C,Embedded,Embedded Linux,Microcontroller,我听说不同的微控制器会有不同的字长,所以c程序中的填充结构分别在8位、16位、32位和64位微控制器中有所不同。如果是这样的话,还可以告诉我这些控制器上int和单词长度指针的大小 sizeof(char)=1 CHAR_BIT是字符类型的长度(以位为单位)。至少是8点。若您为小于8的数据总线编写了一个C编译器,那个么必须进行一些回迁才能访问字符 这是惯例 现在,在字符位功能中,可以根据长度限制为其他类型选择任何长度。例如,不允许C的int-type小于16位,long至少为32位,long-l

我听说不同的微控制器会有不同的字长,所以c程序中的填充结构分别在8位、16位、32位和64位微控制器中有所不同。如果是这样的话,还可以告诉我这些控制器上int和单词长度指针的大小

sizeof(char)=1
CHAR_BIT是字符类型的长度(以位为单位)。至少是8点。若您为小于8的数据总线编写了一个C编译器,那个么必须进行一些回迁才能访问字符

这是惯例

现在,在字符位功能中,可以根据长度限制为其他类型选择任何长度。例如,不允许C的int-type小于16位,long至少为32位,long-long至少为64位

关于指针和sizeofvoid*的表示,C没有施加任何限制。指针的表示没有大小限制

作为一个更奇特的例子,如果您有一个体系结构,其中字符表示在64位上,整数表示在64位上,那么sizeofint将是1。sizeoftype是预先计算的,因此类型的位数等于sizeoftype乘以的字符位数

单词的长度是多少。。。在8、16、32和64位微控制器上

sizeof(char)=1
取决于微控制器。有一个问题。如果您的芯片未列出,则需要查阅手册或联系供应商

整型指针的大小(&p)。。。在c程序上

这取决于目标系统的具体架构,也可能取决于系统软件

int的大小正好是sizeofint字节,也就是sizeofint*CHAR\u位。它将不少于16位


指向T的指针的大小正好是sizeofT*字节,也就是sizeofT**CHAR\u位。char*和void*的大小足以表示所有地址。在现代系统中,所有数据指针都具有相同的大小是很常见的,但该标准并不能保证这一点。

在为同一体系结构编译时,每个编译器的大小甚至可能有所不同。C++标准提供了某些最小保证,例如int至少为16位,并且如果可以使用,则可以使用具有定义大小的类型,例如INT64。但我认为你没有得到更多。sisioFoChar你已经标记了C++,但是在你的问题中只提到C。许多微控制器具有扩展寻址模式,但只能处理少量数据。几乎每8位和16位MCU都是这样。