整数类型
数据类型 | 有符号所占字节数 |
有符号表示范围 |
无符号所占字节数 (unsigned) |
无符号表示范围 (unsigned) |
---|---|---|---|---|
char | 1B(字节) | -2^7~2^7-1 | 1 字节 | 0 ~2^8−1 |
short | 2字节 | -2^15~2^15-1 | 2 字节 | 0~2^16-1 |
int | 4字节 | -2^31~2^31-1 | 4 字节 | 0~2^32-1 |
long | 4 字节 | -2^31~2^31-1 | 4 字节 | 0~2^32-1 |
long long | 8 字节 | -2^63~-2^63-1 | 8 字节 | 0~2^64-1 |
浮点型
数据类型 | 所占字节数 | 表示范围 |
---|---|---|
float | 4 字节 | 大约 ±3.4×10^38,精度约为 6 - 7 位小数 |
double | 8 字节 | 大约 ±1.8×10^308,精度约为 15 - 16 位小数 |
long double | 通常 8 字节或更多(如 16 字节) | 范围和精度比 double 更大 |
布尔类型
数据类型 | 所占字节数 | 表示范围 |
---|---|---|
bool | 1 字节 | false / true |
#include <stdio.h>
#include <stdbool.h>
//用sizeof运算符来获取特定系统上数据类型的实际字节数
int main() {
printf("signed char: %zu bytes\n", sizeof(signed char));
printf("unsigned char: %zu bytes\n", sizeof(unsigned char));
printf("signed int: %zu bytes\n", sizeof(signed int));
printf("unsigned int: %zu bytes\n", sizeof(unsigned int));
printf("float: %zu bytes\n", sizeof(float));
printf("double: %zu bytes\n", sizeof(double));
printf("bool: %zu bytes\n", sizeof(bool));
return 0;
}