C/C++中的基本数据类型
在C语言中,支持下面这些基本数据类型:
数据类型 | 占用字节 | 取值范围 | 备注 |
---|---|---|---|
short | 2 | -32768 ~ 32767 | 短整型 |
int | 4 | -2147483648 ~ 2147483647 | 整型 |
long | 4 / 8 | -2147483648 ~ 2147483647 -9223372036854775808 ~ 9223372036854775807 | 长整型:在windows中或32位linux中占4字节;64位linux中占8字节 |
long long | 8 | -9223372036854775808 ~ 9223372036854775807 | 长整型 |
unsigned short | 2 | 0 ~ 65535 | 无符号短整型 |
unsigned int | 4 | 0 ~ 4294967295 | 无符号整型 |
unsigned long | 4 / 8 | 0 ~ 4294967295 0 ~ 18446744073709551615 | 无符号长整型 |
unsigned long long | 8 | 0 ~ 18446744073709551615 | 无符号长整型:在windows中或32位linux中占4字节;64位linux中占8字节 |
float | 4 | 1.175*10^-38 ~ 1.175*10^38 | 单精度浮点型 |
double | 8 | 2.225*10^-308 ~ 1.797*10^308 | 双精度浮点型 |
char | 1 | ASCII表中的字母、数字、符号 | 字符 |
这些基本类型中,有一个比较特殊的数据类型long long,与long类型不同的是,不论是哪个编译器它都是占8字节。
在表示数值范围:double > float > long long > long > int > short > char。
在给变量赋值时,整型值默认为int类型,浮点型默认为double类型,也可以通过在数值后面添加后缀指定数据类型:long(L)、long long(LL)、float(F)。
可以通过下面的方式获取到数据类型值的范围:
#include <stdio.h>
#include <limits.h>
int main() {
printf("short size %d: %d ~ %d\n", sizeof(short), SHRT_MIN, SHRT_MAX);
printf("int size %d: %d ~ %d\n", sizeof(int), INT_MIN, INT_MAX);
printf("long size %d: %ld ~ %ld\n", sizeof(long), LONG_MIN, LONG_MAX);
printf("long long size %d: %lld ~ %lld\n", sizeof(long long), LLONG_MIN, LLONG_MAX);
printf("unsigned short size %d: %u ~ %u\n", sizeof(unsigned short), 0, USHRT_MAX);
printf("unsigned int size %d: %u~%u\n", sizeof(unsigned int), 0, UINT_MAX);
printf("unsigned long size %d: %lu ~ %lu\n", sizeof(unsigned long), 0, ULONG_MAX);
printf("unsigned long long size %d: %u ~ %llu\n", sizeof(unsigned long long), 0, ULLONG_MAX);
printf("float size %d\n", sizeof(float));
printf("double size %d\n", sizeof(double));
return 0;
}
不同的编译器执行上面的代码输出可能不同,在64位linux环境下执行上面的代码输出:
short size 2: -32768 ~ 32767
int size 4: -2147483648 ~ 2147483647
long size 8: -9223372036854775808 ~ 9223372036854775807
long long size 8: -9223372036854775808 ~ 9223372036854775807
unsigned short size 2: 0 ~ 65535
unsigned int size 4: 0~4294967295
unsigned long size 8: 0 ~ 18446744073709551615
unsigned long long size 8: 0 ~ 18446744073709551615
float size 4
double size 8