开发者

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

I would like to know the size of fol开发者_如何转开发lowing types in C,

sizeof(int), sizeof(float), sizeof(double), sizeof(char), sizeof(167), sizeof(3.1415926) and sizeof(‘$’).


Sure. You can use the following code. I'm answering in C since that's what the question asked for, despite the C# tag. If you really want C#, someone else will have to help.

#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;
}

This outputs (on my system):

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

Keep in mind that this gives you the values in terms of bytes which, under the C standard, are not necessarily 8 bits. You should examine CHAR_BITS from limits.h to see how many bits are in a byte.


Something like

#include <stdio.h>

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

with a lot of similar lines will do. Save, compile, and run.

One common mistake is printf("sizeof(int) = %d", sizeof(int));, but this is a mismatch. The result of sizeof() is size_t, which is an unsigned integral type that's big enough to hold any possible object size. The %d specifier asks for an int, which is a signed integral type that's convenient for calculation. It's not all that rare for size_t to be bigger than int, and then you're passing arguments of a size that the function doesn't expect, and that can be bad.


If it's a console application, you could use writeline that takes a string and displays it:

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(‘$’));


I am not working on C from last three years. But following is the answer of your question. You can print size of different data types as follows:

printf("Size of integer: %ul",sizeof(int));

printf("Size of float: %ul",sizeof(float));

printf("Size of double: %ul",sizeof(double));

printf("Size of char: %ul",sizeof(char));

printf("Size of 167: %ul",sizeof (167));

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

printf("Size of integer: %ul",sizeof(‘$’));

Just paste above printf lines in your program. You will get the size of the datatypes.

Here sizeof() is a function which returns the total memory required to store that datatype or literal.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜