网站大量收购闲置独家精品文档,联系QQ:2885784924

C语言中的整数(short,int,long)教程.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言中的整数(short,int,long)教程

整数是编程中常用的一种数据,C语言中有三种整数类型,分别为 short、int 和 称为整型,short 称为短整型,long 称为长整型,它们的长度(所占字节数)关系为: short = int = long 它们具体占用几个字节C语言并没有规定,C语言只做了宽泛的限制: short 至少占用2个字节。 int 建议为一个机器字长。32位环境下机器字长为4字节,64位环境下机器字长为8字节。 short 的长度不能大于 int,long 的长度不能小于 int。 这就意味着,short 并不一定真的”短“,long 也并不一定真的”长“,它们有可能和 int 占用相同的字节数。决定整数长度的因素很多,包括硬件(CPU和数据总线)、操作系统、编译器等。 在16位环境下,short 为2个字节,int 为2个字节,long 为4个字节。16位环境多用于单片机和低级嵌入式系统,在PC和服务器上基本都看不到了。 对于32位的 Windows、Linux 和 OS X,short 为2个字节,int 为4个字???,long 也为4个字节。PC和服务器上的32位系统占有率也在慢慢下降,嵌入式系统使用32位越来越多。 在64位环境下,不同的操作系统会有不同的结果,如下所示(长度以字节计): 操作系统 short int long Win64 16 32 32 类Unix系统(包括 Unix、Linux、OS X、BSD、Solaris 等) 16 32 64 目前我们使用较多的PC系统为 Win XP、Win 7、Win 8、Win 10、Mac OS X、Linux,short 和 int 的长度都是固定的,大家可以放心使用,long 的长度在 Win64 和类Unix系统下会有所不同,使用时要注意移植性。 获取某个数据类型的长度可以使用 sizeof 操作符,如下所示: #include stdio.h int main() { short a=10; int b=100; long c=1000; char d=X; int a_length=sizeof a; int b_length=sizeof(int); printf(a=%d, b=%d, c=%d, d=%d\n, a_length, b_length, sizeof(c), sizeof(char)); return 0; } 在Win7下的运行结果为: a=2, b=4, c=4, d=1 sizeof 用来获取某个数据类型或变量所占用的字节数,如果后面跟的是变量名称,那么可以省略 ( ),如果跟的是数据类型,就必须带上 ( )。 需要注意的是,sizeof 是C语言中的操作符,不是函数,所以可以不带 ( ),后面会详细讲解。 符号位 在数学中,数字有正负之分。在C语言中也是一样,short、int、long 都可以带上符号,例如: short a=-10; //负数 int b=+10; //正数 long c=(-9) + (+12); //负数和正数相加 如果不带正负号,默认就是正数。 符号也要在内存中体现出来。符号只有正负两种情况,用1位就足以表示,这1位就是最高位。以 int 为例,它占用32位的内存,0~30位表示数值,31 位表示正负号。如下图所示: 在编程语言中,计数往往是从0开始,例如字符串 abc123,我们称第 0 个字符是 a,第 1 个字符是 b,第 5 个字符是 3。这和我们平时从 1 开始计数的习惯不一样,大家要慢慢适应,培养编程思维。 在符号位中,用0表示正数,用1表示负数。例如 short 类型的 -10、+16 在内存中的表示如下: 如果不希望设置符号位,可以在数据类型前面加 unsigned,如下所示: unsigned short a=12; unsigned int b=1002; unsigned long c=9892320; 这样,short、int、long 中就没有符号位了,所有的位都用来表示数值。也就意味着,使用了 unsigned 只能表示正数,不能表示负数了。 如果是unsigned int,那么可以省略 int ,只写 unsigned,例如: unsigned n=100; 它等价于: unsigned int n=100; 输出无符号数使用%u,代码如下: #include stdio.h #include stdlib.h int main() { int a=1234; unsigned a1=1234; int b=0x7fffffff; int c=0 // 00x7fffffff + 0x1 int d=0xffffffff; unsigne

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档