繁体   English   中英

如何在c中获取各种类型的大小?

[英]How can I get the sizes of various types in c?

我想知道C中以下类型的大小,

sizeof(int)sizeof(float)sizeof(double)sizeof(char)sizeof(167)sizeof(3.1415926)sizeof('$')

当然。 您可以使用以下代码。 我正在用C回答,因为尽管有C#标记,但这仍是问题的答案。 如果您真的想要C#,那么其他人将不得不提供帮助。

#include <stdio.h>
int main (void) {
    // Use %zu for size_t if your compiler supports it.
    printf("sizeof(int)       = %d\n",sizeof(int));
    printf("sizeof(float)     = %d\n",sizeof(float));
    printf("sizeof(double)    = %d\n",sizeof(double));
    printf("sizeof(char)      = %d\n",sizeof(char));
    printf("sizeof(167)       = %d\n",sizeof(167));
    printf("sizeof(3.1415926) = %d\n",sizeof(3.1415926));
    printf("sizeof('$')       = %d\n",sizeof('$'));
    return 0;
}

输出(在我的系统上):

sizeof(int)       = 4
sizeof(float)     = 4
sizeof(double)    = 8
sizeof(char)      = 1
sizeof(167)       = 4
sizeof(3.1415926) = 8
sizeof('$')       = 4

请记住,这给你的值以字节为单位其中,C标准下, 不一定是8位。 您应该从limits.h检查CHAR_BITS,以查看一个字节中有多少位。

就像是

#include <stdio.h>

int main()
{
    printf("sizeof(int) = %ul\n", (unsigned long) sizeof(int));
}

与许多类似的行会做。 保存,编译和运行。

一个常见的错误是printf("sizeof(int) = %d", sizeof(int)); ,但这是不匹配的。 sizeof()的结果是size_t ,它是一个无符号整数类型,足够容纳任何可能的对象大小。 %d说明符要求一个int ,这是一个有符号整数类型,便于计算。 size_t大于int并不是很罕见,然后您要传递函数无法预期的大小的参数,这可能很糟糕。

如果是控制台应用程序,则可以使用带字符串并显示它的writeline:

Console.WriteLine(sizeof(int));
Console.WriteLine(sizeof(int));
Console.WriteLine(sizeof(float));
Console.WriteLine(sizeof(double));
Console.WriteLine(sizeof(char));
Console.WriteLine(sizeof (167));
Console.WriteLine(sizeof(3.1415926));
Console.WriteLine(sizeof(‘$’));

最近三年来我一直不在从事C语言工作。 但是以下是您问题的答案。 您可以按以下方式打印不同数据类型的大小:

printf(“整数大小:%ul”,sizeof(int));

printf(“ float的大小:%ul”,sizeof(float));

printf(“ Double of size:%ul”,sizeof(double));

printf(“字符大小:%ul”,sizeof(字符));

printf(“ 167的大小:%ul”,sizeof(167));

printf(“ Size of 3.1415926:%ul”,sizeof(3.1415926));

printf(“整数大小:%ul”,sizeof('$'));

只需在程序中的printf行上方粘贴即可。 您将获得数据类型的大小。

这里的sizeof()是一个函数,该函数返回存储该数据类型或文字所需的总内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM