在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位
 
 
 
 
 
 
  
 
    

浅析C语言中的整形类型的更多相关文章

  1. c语言中自定义bool类型模板

    首先,c语言中没有bool类型,只有c++中有,所以需要自定义,即c中表示bool类型的方法: 1.模板1 typedef int bool; #define false 0 #define true ...

  2. 浅析c语言中的变量(局部变量,外部变量,静态变量,寄存器变量)[转]

    c语言中变量分为四类,分别是 1.auto   自动变量 2.static   静态存贮分配变量(又分为内部静态和外部静态) 3.extern  全程变量(用于外部变量说明) 4.register   ...

  3. 简答的理解C语言中的各种类型函数

    1.变参函数 变长参数的函数即参数个数可变.参数类型不定 的函数.最常见的例子是printf函数.scanf函数和高级语言的Format函数.在C/C++中,为了通知编译器函数的参数个数和类型可变(即 ...

  4. c#中的整形类型

    一.整型类型 C#中定义了8中整数类型:字节型(byte).无符号字节型(ubyte).短整型(short).无符号短整型(ushort).整型(int).无 符号整型(uint).长整型(long) ...

  5. C语言中几种类型所占字节数

    其实C标准并没有具体给出规定哪个基本类型应该是多少个字节数,而且这个也与OS.编译器有关,比如同样是在32位操作系统,VC++的编译器下int类型为4个字节,而在tuborC下则是2个字节. 下面给出 ...

  6. C语言中的复合类型

    复合类型 一.掌握的类型 1. 指针数组 int * arr[10]; //arr是一个数组,有10个元素,每个元素都是一个指针,即arr是一个指针数组 int a,b,c,d; arr[0] = & ...

  7. 浅析SQL Server 中的SOS_SCHEDULER_YIELD类型的等待

    本文出处:http://www.cnblogs.com/wy123/p/6856802.html 进程的状态转换 在说明SOS_SCHEDULER_YIELD等待之前,先简要介绍一下进程的状态(迷迷糊 ...

  8. 输出C语言中 变量的类型

    使用gcc的警告信息间接知道变量的类型 #include <stdio.h> #include <stdlib.h> #include <stddef.h> #in ...

  9. Go语言中的值类型和引用类型

    一.值类型和引用类型值类型:int.float.bool和string这些类型都属于值类型,使用这些类型的变量直接指向存在内存中的值,值类型的变量的值存储在栈中.当使用等号=将一个变量的值赋给另一个变 ...

随机推荐

  1. Qtp自动测试工具

    QTP是基于GUI界面的自动化测试工具,用于系统的功能测试. QTP录制的是鼠标和键盘的消息.QTP录制回放时基于windows操作系统的消息机制.QTP在录制时监听应用程序的消息,监听到之后把消息放 ...

  2. Spring加载xml配置文件的方式 ApplicationContext

    大家都知道Java读普通文件是通过Basic I/O 中的InputStream.OutStream.Reader.Writer 等实现的.在spring 框架中,它是怎样识别xml这个配置文件的呢? ...

  3. Azure Go Management SDK 中国版使用示例

    简介 刚学习go几天,尝试调用Azure的SDK进行管理API的操作,基本思路是基于注册的AD Application信息生成token,然后再使用Token生成serviceClient,然后再进行 ...

  4. Fedora Linux安装deb包

    前言: 我们知道,在Linux系统上有两种主要的软件包格式,分别是RPM和deb. RPM是"RPM Package Manager(RPM软件包管理器)"的递归缩写.RPM是一种 ...

  5. 第七章 函数表达式和函数声明,关于this对象 ,私有作用域(function(){})() ,私有变量和特权方法

    一:函数表达式和函数声明 1:函数声明和函数表达式的区别 ①函数声明不需要分号结尾 ②函数声明有函数提升的特点 ③函数声明后面不能跟圆括号直接调用,因为javascript将function关键字当作 ...

  6. cassandra 在window上的demo

    Cassandra   window使用 1.        下载:http://cassandra.apache.org/download/. 2.        解压后,bin目录下,cassan ...

  7. 深入js隐式类型转换

    前言 相信刚开始了解js的时候,都会遇到 2 =='2',但是 1+'2' == '1'+'2'为false的情况,这时候应该会是一脸懵逼的状态,不得不感慨js弱类型的灵活让人发指,隐式类型转换就是这 ...

  8. error.go源码笔记

    ] {     case errorCodeConnFailed:         return ErrConnectionFailed(err)     case errorCodeHttpServ ...

  9. Stackoverflow 最受关注的 10 个 Java 问题

    Stack Overflow 是一个大型的编程知识库.在 Stack Overflow 中已经有数以百万计的问题,并且很多答案有着很高的质量.这就是为什么 Stack Overflow 的答案经常位于 ...

  10. dnscache --源码笔记

    ) } } //通过net包 解析域名对应的ip集合 func (r *Resolver) Lookup(address string) ([]net.IP, error) { ips, err := ...