基本数据类型长度 以及 int,long 类型占字节数相同原因

来源:互联网 发布:php设为首页代码 编辑:程序博客网 时间:2024/06/01 09:05

基本数据类型一般长度

(注意以下的 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>



0 0
原创粉丝点击