1,int 是 C 语言的基本整数类型,可以满足我们处理一般数据的需求。

  C 语言还提供了四个可以修饰 int 的关键字:short、long、signed,以及 unsigned。

  利用这四个关键字,C 语言标准定义了以下整数类型:

名称 全称类型说明符 缩写类型说明符       位数                     范围
整型 int int 16位      -32768至+32767 
无符号整型 unsigned int  unsigned 16位 0 至 65,535 
短整型 short int  short 16位 -32768至+32767 
无符号短整型      unsigned short int     unsigned short 16位 0 至 65,535 
长整型 long int  long 32位 -2,147,483,648 至 2,147,483,647
无符号长整型 unsigned long int unsigned long 32位 0至4,294,967,295
 

2. 声明方式

这些整数类型的声明方式与 int 类型的声明方式一样。例如:

 long int estine;
long johns;
short int erns;
short ribs;
unsigned int s_count;
unsigned players;
unsigned long headcount;
unsigned short yesvotes;
long long ago; /* C99 特有 */
unsigned long long ego; /* C99 特有 */

 

如果编译器不支持 C99 标准,那就不能使用 long long 和 unsigned long long。

3. 整数类型的选择

如果处理的只是非负整数,那么应该优先使用 unsigned 打头的那些整数类型。

如果处理的整数超出了 int 所能表示的范围,并且编译器中,long 的表示范围比 int 大,那就使用 long。
不过,若非必要,尽量不要用 long,因为它可能会降低程序运行效率。
有一点要注意:如果编译器中,long 和 int 都是 32 位的,并且您需要使用 32 位整数,那么应该用 long,而不要用 int。
只有这样,程序才可以安全地移植到 16 位的计算机,因为 16 位的计算机中,int 一般也是 16 位的。
类似地,如果要使用 64 位整数,那就用 long long。
如果 int 是 32 位的话,那么使用 short 可以节省空间,不过得确保您要处理的整数不会超出 short 的表示范围。这种“节省”对内存大的计算机来说,是没什么意义的。

4. long 型常量和 long long 型常量

一般来说,整数常量是被当作 int 类型来存储的。

如果使用的整数常量超出了 int 的表示范围,C 语言规定编译器自动使用 unsigned int 来处理这个常量。
如果 unsigned 也不足以表示这个常量的话,编译器就会用 long。
如果还表示不了的话,那就依次用 unsigned long,long long,unsigned long long。
如果 unsigned long long 也表示不了,那么编译器就没辙了。
注意:long long 和 unsigned long long 是 C99 特有的。
例如:如果 int 是 16 位的话,它就表示不了常量 1000000。编译器会使用 long 来处理这个常量,因为 unsigned int 也表示不了 1000000 。
同样,十六进制和八进制整数常量通常也是被作为 int 来处理。但是,当我们使用的常量超出了 int 的表示范围后,编译器会依次使用unsigned int,long,unsigned long,long long 和 unsigned long long。直到所使用的类型足以表示那个常量为止。
有时,使用的是较小的常量,但是希望这个常量被当作 long 来处理,这就需要在这个常量后面加上后缀 l(小写字母 l)或者 L(大写字母 L)。
应该避免使用 l ,因为 l 容易和数字 1 混淆。
例如:整数常量 7 是被作为 int 来处理的,但整数常量 7L(或者 7l)是被作为 long 来处理的。
类似地,在整数常量后面加上后缀 ll 或者 LL ,这个常量就会被当作 long long 来处理。
例如:3LL 。如果想使用无符号整数常量的话,还要配合使用后缀 u 或者 U 。
例如:2u,3U,4Lu,5ul,6LU,7LLU,8Ull,9uLL 。
这些后缀也可以用于十六进制和八进制整数常量。例如:020L,010LL,0x30uL,0x40ull。

C语言三种整数类型的更多相关文章

  1. Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool。后面三种布尔类型是为了与其他语言兼容而引入的

    bool是LongBool类型. Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool.后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使 ...

  2. java Data、String、Long三种日期类型之间的相互转换

    java Data.String.Long三种日期类型之间的相互转换      // date类型转换为String类型   // formatType格式为yyyy-MM-dd HH:mm:ss// ...

  3. sql server 性能调优之 资源等待内存瓶颈的三种等待类型

    一.概述 这篇介绍Stolen内存相关的主要三种等待类型以及对应的waittype编号,CMEMTHREAD(0x00B9),SOS_RESERVEDMEMBLOCKLIST(0x007B),RESO ...

  4. SEO三种职位类型:编辑型SEO、技术型SEO、营销型SEO详解

    SEO三种职位类型:编辑型SEO.技术型SEO.营销型SEO详解 网站SEO优化作为营销端的服务之一,这些年也呈现出日新月异的格局.一改过去游兵散将式的小作坊生产模式,不断有力量强大的公司团体加入到这 ...

  5. 固本培元之三:Convert、运算符、流程控制语句、ref/out/in三种参数类型

    一.Convert类常用的类型转换方法Convert.ToInt32() 转换为整型(int)Convert.ToChar() 转换为字符型(char)Convert.ToString() 转换为字符 ...

  6. sql server 性能调优 资源等待之内存瓶颈的三种等待类型

    原文:sql server 性能调优 资源等待之内存瓶颈的三种等待类型 一.概述 这篇介绍Stolen内存相关的主要三种等待类型以及对应的waittype编号,CMEMTHREAD(0x00B9),S ...

  7. xhtml三种元素类型

    xhtml三种元素类型:块级元素/内联元素/可变元素 块级元素:独占一行.可自定义自己的宽度和高度.作为其他元素的容器,可容纳其他内联元素和块级元素,喻做一个盒子.内联元素:始终以行内逐个显示.不能设 ...

  8. 由fprintf和printf看C语言三种标准流

    一.C语言中的三种标准流 1.标准输入流:stdin 2.标准输出流:stdout 3.标准错误输出流:stderr 他们的类型都是File * 二.fprintf于printf的区别 frintf( ...

  9. python学习Day8 三种字符类型、文件操作

    复习 类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5') | ...

随机推荐

  1. lable 语句

    var is = 20; loop: while(is > 10){ console.log(is); if(is % 7 == 0){ break loop; } is --; } 结果: b ...

  2. 当在命令行中执行virtualenv venv时报此错误:'utf-8' codec can't decode byte 0xd5 in position 38: invalid continuation by

    1.windows中安装虚拟环境virtualenv时, 当在命令行中执行virtualenv venv时报此错误:'utf-8' codec can't decode byte 0xd5 in po ...

  3. TCP通讯代码

    服务端代码: import socket server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 使用固定端口 server_ ...

  4. [转]轻松理解AOP思想(面向切面编程)

    原文链接 Spring是什么 先说一个Spring是什么吧,大家都是它是一个框架,但框架这个词对新手有点抽象,以致于越解释越模糊,不过它确实是个框架的,但那是从功能的角度来定义的,从本质意义上来讲,S ...

  5. java后端开发echarts

    参考: https://blog.csdn.net/mxdmojingqing/article/details/77340245 https://github.com/abel533/ECharts

  6. 一起探讨Go 语言为什么能成功?

    导读 两位创造者Rob Pike和Robert Griesemer一起探讨了Go成功的原因. 常言道,历史不会重演,但总会惊人的相似. 如果您想创建一种编程语言,多向那些有经验的人士学习,他们有很多可 ...

  7. Periodic-table

    1. Periodic table 1.1 元素的排列 1.2 表中的行与列 1.3 元素区块 1.4 周期表中的一些趋势 1.5 元素周期律的本质 1.6 电子排布 2. 更多相关链接 2.1 维基 ...

  8. 线程安全Collections.synchronizedList

    ollections.synchronizedList引发的线程安全问题 有些容器是线程安全的(Vector,ConcurrentLinkedQueue等),有些则不是(list等),利用类 似 pr ...

  9. 问题解决 : MyBatis一对一查询时,打印结果只有一条数据

    问题截图:修改后,结果返回条数正确 问题解决: 因为有重名的列,建议起个别名

  10. npm和npx

    npx 指令会先在项目的node_modules里面找资源包 npm info 包名称  [查看资源包的信息]