基本数据类型一般长度
(注意以下的 long long 实际上指的是 unsigned long long 类型)
(long long 类型数值范围是-9223372036854775808 ~ 9223372036854775807)差不多范围是1.8*10^20.
从上面 可以发现 int 类型 和 long 类型 所占用字节数是一样的,
这是由操作系统决定的,参照下表:
类型 | 16位系统/字节 | 32位系统/字节 | 64位系统/字节 |
char | 1 | 1 | 1 |
char* | 2 | 4 | 8 |
short | 2 | 2 | 2 |
int | 2 | 4 | 4 |
long | 4 | 4 | 8 |
long long | 8 | 8 | 8 |
也可以说,这些因操作系统变化的类型的长度,是由编译器决定的.
标准规定 long 类型的大小 不小于 int 类型, 也就是说 sizeof(long) >= sizeof(int).
而 long long 类型 不受限制于编译器.
c/c++ 中 limits.h 头文件的相关源码如下
#define MB_LEN_MAX 5 // max. # bytes in multibyte char
#define SHRT_MIN (-32768) // minimum (signed) short value
#define SHRT_MAX 32767 // maximum (signed) short value
#define USHRT_MAX 0xffff // maximum unsigned short value
#define INT_MIN (-2147483647 - 1) // minimum (signed) int value
#define INT_MAX 2147483647 // maximum (signed) int value
#define UINT_MAX 0xffffffff // maximum unsigned int value
#define LONG_MIN (-2147483647L - 1) // minimum (signed) long value
#define LONG_MAX 2147483647L // maximum (signed) long value
#define ULONG_MAX 0xffffffffUL // maximum unsigned long value
#define LLONG_MAX 9223372036854775807i64 // maximum signed long long int value
#define LLONG_MIN (-9223372036854775807i64 - 1) // minimum signed long long int value
#define ULLONG_MAX 0xffffffffffffffffui64 // maximum unsigned long long int value
#define _I8_MIN (-127i8 - 1) // minimum signed 8 bit value
#define _I8_MAX 127i8 // maximum signed 8 bit value
#define _UI8_MAX 0xffui8 // maximum unsigned 8 bit value
#define _I16_MIN (-32767i16 - 1) // minimum signed 16 bit value
#define _I16_MAX 32767i16 // maximum signed 16 bit value
#define _UI16_MAX 0xffffui16 // maximum unsigned 16 bit value
#define _I32_MIN (-2147483647i32 - 1) // minimum signed 32 bit value
#define _I32_MAX 2147483647i32 // maximum signed 32 bit value
#define _UI32_MAX 0xffffffffui32 // maximum unsigned 32 bit value
// minimum signed 64 bit value
#define _I64_MIN (-9223372036854775807i64 - 1)
// maximum signed 64 bit value
#define _I64_MAX 9223372036854775807i64
// maximum unsigned 64 bit value
#define _UI64_MAX 0xffffffffffffffffui64</span>