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. 【降维】主成分分析PCA推导

    本博客根据 百面机器学习,算法工程师带你去面试 一书总结归纳,公式都是出自该书. 本博客仅为个人总结学习,非商业用途,侵删. 网址 http://www.ptpress.com.cn 目录: PCA最 ...

  2. cmd常用小命令

    #设置n秒后自动关机 -a取消 shutdown -s -t n #输出内容到fileName里,如果文件不存在将会创建文件,>是替换,>>是追加echo something > ...

  3. [转]Mysql连表之多对多

    转自 回到顶部 连表多对多 可以理解成一夫多妻和一妻多夫. 男人表: nid name 1 xxx 2 yyy 3 zzz 女人表: nid name 1 aaa 2 bbb 3 ccc 要让两个表建 ...

  4. Beautisoup库

    所看视频: https://www.bilibili.com/video/av9784617/?p=34 一, Beautifulsoup是一个可以从HTML或XML文件中提取数据的Python库,它 ...

  5. 3 Struts2的常见配置解析

    1 package标签的相关配置 package标签:包,与Java中的包概念不一致.旨在更好的管理actionpackage标签的属性: name :  包的名称,在一个项目不重名即可,无具体含义 ...

  6. 3_02_MSSQL课程_Ado.Net_连接池_连接字符串

    连接池技术:是一种对象池技术. 连接对象频繁的开启和关闭操作. innerConnection  先从池子里面拿,如果没有创建新的!!连接池有大小,最大/最小.  提高了连接对象的重用. Asp.ne ...

  7. python爬虫(二) urlparse和urlsplit函数

    urlparse和urlsplit函数: urlparse: url='http://www.baidu.com/s?wd=python&username=abc#1' result=pars ...

  8. redis 高级学习和应用场景

    redis 高级学习 1.redis 复制 2.redis 集群 3.哨兵机制 4.spring 与哨兵结合 5.数据恢复与转移 6.redis 的阻塞分析 redis 实战 1. 数据缓存(热点数据 ...

  9. c#能同时继承接口和类吗

    c#能同时继承接口和类吗?( 要你命3000条12级分类:C#/.NET语言被浏览449次2013.09.10   满意答案 mroyal450 采纳率:54%12级 2013.09.11 C# 类, ...

  10. 三大JavaScript框架对比——AngularJS、BackboneJS和EmberJS

    <三大JavaScript框架对比——AngularJS.BackboneJS和EmberJS> 本文转载自  作者:chszs,博客主页:http://blog.csdn.net/chs ...