您的位置:首页 > 其它

C Primer Plus-C数据类型

2015-01-25 17:03 309 查看
int类型是有符号整数,即int类型的值必须是整数,可以是正的,负的或者是0,取值范围依赖于计算机系统。

旧的IBM PC兼容机有16位的字,因而使用16位来存储一个int值,取值范围为-32768到32767。

目前个人计算机的整数一般为32位,使用32位的int值。

正确的声明:

int a;
int b,c,d;


都将为4个int大小的变量赋予名称并安排存储空间。

但变量并未初始化。



C把不含小数点和指数的数当作整数。比如22和-44都是整数,而22.0和2.2E1则不是。

八进制和十六进制

一般的,C假设整数常量为十进制数。而8进制和16进制是2的幂,所以这些数可以更加方便的表示与计算机相关的值。用十六进制表示它正好是10000。

十六进制数(2^4)每位恰好可由4位二进制数表示。例如,十六进制的数字3是0011,十六进制的数字5是0101,十六进制值53按位表示形式就是0101 0011。

前缀0x或0X表示十六进制,前缀0表示使用八进制。例如十进制数16用八进制表示为020。

使用不同数制系统的选择是为了方便而提供,并不影响数字的存储,数字都按同样的方式,即计算机内部使用 二进制编码进行存储。

C既允许使用3种数制书写数字,也可以以这3中数制显示数字。

八进制%0,十进制%d,十六进制%x或%X

想显示C语言前缀,可以使用说明符%#o%#x和%#X分别生成0,0x和0X前缀。

C提供3个附属关键字修饰基本的整数类型:short,long,unsigned

A.short int类型(或简写short类型),可能占用比int类型更少的存储空间,用于仅需要小数值的场合以节省空间,同int类型一样short类型也是有符合类型。

B.long int类型(或简写long类型),可能占用比int类型更多的存储空间,用于使用大数值的场合。同int类型一样,long类型是一种有符合类型。

C.long long int类型(或简写long long类型 C99标准),可能占用比long类型更多的存储空间,用于使用更大数值的场合。同int类型一样long long类型是一种有符号类型。

D.unsigned int类型(或简写为unsigned类型),用于只使用非负值的场合,这种类型同有符号类型的 表示范围不同,例如,16位的unsigned int取值范围为0到65535,而带符号int的取值范围为-32768到32767。由于指示数值正负的位也被用于二进制位,所以无符号数可以表示更大的数值。

E.在C90标准中,还允许unsigned long int(简写unsigned long)和unsigned short int(简写unsigned short)类型。C99又增加了unsigned long long int(简写为unsigned long long)类型。

关键字signed可以和任何有符号类型一起使用,它使数据的类型更加明确。例如:short,short int,signed short,以及signed short int代表了同一种类型。

其它类型的声明方式同int类型相同,最后一条语句由C99标准引入



C仅能保证short类型不会比int类型长,并且long类型不会比int类型短。

目前一般的情况是,long long类型为64位,long类型为32位,short类型为16位,int类型为16位或32位。

在诸多整数类型中,请首先考虑unsigned类型。这种类型用于计数是十分自然的事,因为你不需要负数,而且无符号能取到比有符号类型更大的正数。

%u说明符显示unsigned int类型的值。

整数达到最大是,它将溢出到起始点。unsigned int起始点是0,而int变量的起始点则是-2147483648。

在支持long long类型的系统中,可以使用ll或LL后缀标识long long类型值,比如3LL。u或U后缀标识unsigned long long类型值,比如5ull,10LLU,9Ull。

打印unsigned int数字可以使用%u符号。打印打印long数值,可以使用%ld格式说明符。在x和o符号钱也可以使用l前缀

因此%lx表示以十六进制打印长整数,%lo表示以八进制格式打印长整数

其他格式

可以对short类型使用h前缀,因此%hd表示以十进制显示short整数,%ho表示以八进制显示short整数。h和l前缀都可以同u结合使用以表示无符号类型,比如%lu表示打印unsigned long类型。long long类型,系统使用了%lld和%llu来表示有符号和无符号类型。

无论使用%hd还是%d,short类型变量end的显示结果相同。因为传递函数参数时C自动将short类型的值转换为int类型。

因为int类型被认为是计算机处理起来最方便有效的整数类型,可以使用h修饰符显示一个较长的证书被截为short类型的样子。

把值65537按照二进制格式写为一个32位的数字时,它应该是00000000000000010000000000000001。使用%hd之后显示后16位,即显示1。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: