在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. 网上整理的对于Rest和Restful api的理解

    一.什么是Rest? REST不是"rest"这个单词,而是几个单词缩写 -- REpresentational State Transfer 直接翻译:表现层状态转移,但这个翻译 ...

  2. 【转】spring cloud eureka 参数配置

    eureka.client.registry-fetch-interval-seconds 表示eureka client间隔多久去拉取服务注册信息,默认为30秒,对于api-gateway,如果要迅 ...

  3. mvn -DskipTests和-Dmaven.test.skip=true区别

    在使用mvn package进行编译.打包时,Maven会执行src/test/java中的JUnit测试用例,有时为了跳过测试,会使用参数-DskipTests和-Dmaven.test.skip= ...

  4. Enabling Chrome Developer Tools inside Postman

    Chrome's Developer Tools are an indispensable part of the modern web development workflow. However, ...

  5. Java基础系列--冒泡排序

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9064218.html 1.算法简介 冒牌排序是很耳熟的排序方式,虽然它使用的很少,但是经 ...

  6. serialPort操作结构体Hashtable的使用

  7. 阿里云部署java项目参考如下链接

    http://www.cnblogs.com/softidea/p/5271746.html https://oneinstack.com/question/how-to-deploy-java-ap ...

  8. 10.app后端选择什么开发语言

    在qq上,经常看到有创业团队的创始人一直都招不到技术人员,除了项目的因素外,很大的原因就是所需要掌握的开发语言偏门.通过阅读本文,详细了解选择开发语言的核心原则,使各位心里对开发语言的选择更加有数. ...

  9. Java Script中常见操作

    字符串常见操作:obj.length 长度obj.trim() 移除空白obj.trimLeft()obj.trimRight)obj.charAt(n) 返回字符串中的第n个字符obj.concat ...

  10. tcp.go

    )     _, err := io.ReadFull(clientConn, buf)     if err != nil {         p.ctx.nsqd.logf("ERROR ...