浅析C语言中的整形类型

浅析C语言中的整形类型

浅析C语言中的整形类型

在C语言中,可以把 字符型、短整形、整形、长整形都看作是整形,同属于整形家族这个大类型。

这些类型的大小,默认是否有符号等一些知识点较零散,较容易混淆,所以特地整理如下。

一 类型存储字节长度说明

字符型(char): C语言规定长度是8位,占一个字节。

短整、整形、长整型之间的关系则是:

长整形至少和整形一样长,整形至少和短整形一样长。

sizeof(long int) >= sizeof(int) >=sizeof(short int)

短整形、整形、长整形的长度(占几个字节)C语言标准是未明确规定的,

由编译器实现决定。

二 是否有符号说明

字符型(char),C语言标准未规定默认是signed还是unsigned signed,由编译器实现决定。

短整形、整形、长整形则C语言标准明确规定默认是signed的。C语言标准中明确规定除了char类型外,

如果不明确写明signed或unsigned 关键字都表示是signed。

例如 int n1; //n1肯定是有符号类型的整数。 肯定是 signed int n1。

char ch1; //根据编译器的实现而定,ch1有可能是signed char, 也有可能是unsigne char 。

综上所述,signed 一般用在char类型声明上,其他类型默认都是signed类型的。

三 整形声明的省略写法

short long signed unsigned 这些是用于修改变量长度和符号的关键字。

在声明整形变量时,如果声明中已经有有了以上4个关键字声明符,关键字int可以省略。

例如 unsigned short int a; 等同于 unsigned short a ;

short == signed short ==short int == signed short int 。

int == signed int == signed

long == long int == signed long == signed long int

unsigned short == unsigned short int

unsigned int == unsigned

unsigned long == unsigned long int

四 实际常用编译器实现规范

虽然各编译器对于整形的具体实现不相同,但通常实现都遵从ILP32或LP64规范。

ILP32的含义是 I(Integer),L(Long), P(Pointer)是32位,意思是整形、长整形、指针都是4字节、32位。32位计算机采用该规范。

LP64 的含义是 L(Long), P(Pointer)是64位,8字节。通常64位计算机采用该规范。

编译器规范具体实现如下:

类型

ILP32

LP32

char

8位

8位

short

16位

16位

int

32位

32位

long

32位

64位

long long

64位

64位

指针

32位

64位

double

64位

64位

你要安排你的未来

posted on

2019-04-17 17:15

happyzeng79

阅读(1868)

评论(1)

收藏

举报

相关推荐