C语言数据类型取值范围及格式化符号
一、数据类型取值范围与格式化输出符号表格
数据类型 | 大小(字节) | 取值范围 | 格式化输出符号 |
---|---|---|---|
char | 1 | -128到127<br>或0到255(如果声明为unsigned char) | %c (字符)<br>%hhu (无符号) |
signed char | 1 | -1.28×10²到1.27×10² | %hhd (有符号) |
unsigned char | 1 | 0到2.55×10² | %hhu |
short | 2 | -3.2768×10⁴到3.2767×10⁴ | %hd |
unsigned short | 2 | 0到6.5535×10⁴ | %hu |
int | 4 | -2.147483648×10⁹到2.147483647×10⁹ | %d |
unsigned int | 4 | 0到4.294967295×10⁹ | %u |
long | 4或8 | -2.147483648×10⁹到2.147483647×10⁹(32位系统)或 -9.223372036854775808×10¹⁸到9.223372036854775807×10¹⁸(64位系统) | %ld |
unsigned long | 4或8 | 0到4.294967295×10⁹(32位系统)或 0到1.8446744073709551615×10¹⁹(64位系统) | %lu |
long long | 8 | -9.223372036854775808×10¹⁸到9.223372036854775807×10¹⁸ | %lld |
unsigned long long | 8 | 0到1.8446744073709551615×10¹⁹ | %llu |
float | 4 | 约±3.4×10⁻³⁸到±3.4×10³⁸ | %f |
double | 8 | 约±1.7×10⁻³⁰⁸到±1.7×10³⁰⁸ | %lf |
long double | 10或16 | 约±1.1×10⁻⁴⁹³²到±1.1×10⁴⁹³² | %Lf |
二、详细说明
(一)char类型
- 大小
- 为1字节(8位)。
- 取值范围
- 默认情况下,char是有符号的,取值范围为 -1.28×10²到1.27×10²。
- 如果声明为unsigned char,则取值范围为0到2.55×10²。
- 格式化输出
- 有符号:%hhd。
- 无符号:%hhu。
- 字符:%c。
(二)short类型
- 大小
- 为2字节(16位)。
- 取值范围
- 有符号:short,取值范围为 -3.2768×10⁴到3.2767×10⁴。
- 无符号:unsigned short,取值范围为0到6.5535×10⁴。
- 格式化输出
- 有符号:%hd。
- 无符号:%hu。
(三)int类型
- 大小
- 为4字节(32位)。
- 取值范围
- 有符号:int,取值范围为 -2.147483648×10⁹到2.147483647×10⁹。
- 无符号:unsigned int,取值范围为0到4.294967295×10⁹。
- 格式化输出
- 有符号:%d。
- 无符号:%u。
(四)long类型
- 大小
- 取决于系统(32位系统为4字节,64位系统为8字节)。
- 取值范围
- 有符号:
- 32位系统:-2.147483648×10⁹到2.147483647×10⁹。
- 64位系统:-9.223372036854775808×10¹⁸到9.223372036854775807×10¹⁸。
- 无符号:
- 32位系统:0到4.294967295×10⁹。
- 64位系统:0到1.8446744073709551615×10¹⁹。
- 有符号:
- 格式化输出
- 有符号:%ld。
- 无符号:%lu。
(五)long long类型
- 大小
- 为8字节(64位)。
- 取值范围
- 有符号:long long,取值范围为 -9.223372036854775808×10¹⁸到9.223372036854775807×10¹⁸。
- 无符号:unsigned long long,取值范围为0到1.8446744073709551615×10¹⁹。
- 格式化输出
- 有符号:%lld。
- 无符号:%llu。
(六)浮点类型
- float
- 大小:4字节,单精度浮点数。
- 取值范围:约±3.4×10⁻³⁸到±3.4×10³⁸。
- 格式化输出:%f。
- double
- 大小:8字节,双精度浮点数。
- 取值范围:约±1.7×10⁻³⁰⁸到±1.7×10³⁰⁸。
- 格式化输出:%lf。
- long double
- 大小:10或16字节,扩展精度浮点数。
- 取值范围:约±1.1×10⁻⁴⁹³²到±1.1×10⁴⁹³²。
- 格式化输出:%Lf。
三、注意事项
- 格式化输出符号必须与数据类型匹配,否则会导致未定义行为。
- 不同系统和编译器可能对某些类型(如long)的大小有不同的实现,需根据实际情况调整。