c数据类型大小

Jua*_*blo 6 c size types

我怎么知道我的电脑中所有数据类型的大小?

Cle*_*rer 8

以下程序应该为原始类型做技巧:

#include <stdio.h>
int main()
{
    printf("sizeof(char) = %d\n", sizeof(char));
    printf("sizeof(short) = %d\n", sizeof(short));
    printf("sizeof(int) = %d\n", sizeof(int));
    printf("sizeof(long) = %d\n", sizeof(long));
    printf("sizeof(long long) = %d\n", sizeof(long long));
    printf("sizeof(float) = %d\n", sizeof(float));
    printf("sizeof(double) = %d\n", sizeof(double));
    printf("sizeof(long double) = %d\n", sizeof(long double));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

sizeof(char) == 1根据定义,这将打印类型使用的"字节数" .1意味着什么(即多少位)是特定于实现的,并且可能取决于底层硬件.例如,一些机器具有7位字节,一些具有10或12位字节.

  • @JuanPablo - 因为在运行此代码的任何机器上它们的大小相同. (2认同)

Jam*_*lis 6

您可以应用于sizeof您需要知道其大小的每种类型,然后您可以打印结果.

  • @JuanPablo:你的意思是8 4 4 8,对吗?`int`和`long`可能有相同的大小.没有规则说`long`必须能够表示比`int`更大范围的值,只是它必须能够表示_at至少可以用`int`表示的范围. (2认同)
  • @dreamlax:对不起,我不是很清楚,是吗?我只是说`int`和`long`可能是相同的大小(在这种情况下,`int`的大小至少需要32位). (2认同)
  • @JuanPablo:取决于平台,`int`可能与`long`或`short`的大小相同.`int`必须是*至少*16字节宽(它必须至少能够表示范围[-32767,32767]),但可能(通常是)更宽. (2认同)