1.简单记忆
(1)char
:1 字节
(2)short
:2 字节
(3)int
:4 字节
(4)long
:4 字节(32位机),8 字节(64位机)
(5)long long
:8 字节
(6)float
:4 字节
(7)double
:8 字节
(8)指针类型:4 字节(32位机),8 字节(64位机)
2.详细理解
(1)char
char存储大小1字节,值范围-128~127。
unsigned char存储大小1字节,值范围0~255 。
(2)short
short存储大小2字节,值范围-32768~32767。
unsigned short存储大小2字节,值范围0~65535。
(3)int
int存储大小4字节,值范围-2147483648~2147483647。
unsigned int存储大小4字节,值范围0~4294967295。
(4)long
long32位系统存储大小4字节,值范围-2147483648~2147483647。
long64位系统存储大小8字节,值范围-9223372036854775808~9223372036854775807。
unsigned long32位系统存储大小4字节,值范围0~4294967295。
unsigned long64位系统存储大小8字节,值范围0~18446744073709551615
(5)long long
long long存储大小8字节,值范围-9223372036854775808~9223372036854775807。
unsigned long long存储大小8字节,值范围0~18446744073709551615。
(6)float
float存储大小4字节,值范围1.175494351*10^-38~3.402823466*10^38。
(6)double
double存储大小8字节,值范围2.2250738585072014*10^-308~1.7976931348623158*10^308。
(7)指针
32位系统存储大小4字节。
64位系统存储大小8字节。
(9)其他
- long double32位系统存储大小12字节(有效位10字节,为了对齐实际分配12字节),值范围3.4*10^-4932 到 1.1*10^4932,
- long double64位系统存储大小16字节(有效位10字节,为了对齐实际分配16字节),值范围3.4*10^-4932 到 1.1*10^4932。
- 结构体的大小是其成员大小之和,但受到字节对齐的影响。这个对齐规则可以因编译器和编译选项而异,通常是按照机器字长的倍数来对齐。
- `void*` 类型:在32位系统上,`void*` 类型占用4字节,而在64位系统上,`void*` 类型占用8字节。
- `size_t` 类型:在32位系统上,`size_t` 类型通常占用4字节,而在64位系统上,`size_t` 类型通常占用8字节。`size_t` 类型用于表示对象大小或数组索引。
3.求整型类型的代码示例
代码名为test.c:
#include <stdio.h>
int main()
{
printf("\n char在32位机中所占的字节: %d bytes\n", sizeof(char));
printf("\n short在32位机中所占的字节: %d bytes\n", sizeof(short));
printf("\n int在32位机中所占的字节: %d bytes\n", sizeof(int));
printf("\n long在32位机中所占的字节: %d bytes\n", sizeof(long));
printf("\n long long在32位机中所占的字节: %d bytes\n", sizeof(long long));
printf("\n float在32位机中所占的字节: %d bytes\n", sizeof(float));
printf("\n double在32位机中所占的字节: %d bytes\n", sizeof(double));
printf("\n long double在32位机中所占的字节: %d bytes\n", sizeof(long double));
return 0;
}
运行命令:
gcc -o test.exe test.c
.\test.exe
结果如下:
char在32位机中所占的字节: 1 bytes
short在32位机中所占的字节: 2 bytes
int在32位机中所占的字节: 4 bytes
long在32位机中所占的字节: 4 bytes
long long在32位机中所占的字节: 8 bytes
float在32位机中所占的字节: 4 bytes
double在32位机中所占的字节: 8 bytes
long double在32位机中所占的字节: 16 bytes