浅析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位

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值