C语言的数据类型(1、2、3)

C语言的数据类型(1、2、3)


2024年4月18日发(作者:)

C语言有五种基本数据类型:字符、整型、单精度实型、双精度实型和空类型。尽管这几种

类型数据的长度和范围随处理器的类型和C语言编译程序的实现而异,但以b i t为例,整

数与CPU字长相等,一个字符通常为一个字节,浮点值的确切格式则根据实现而定。对于多

数微机,表2 - 1给出了五种数据的长度和范围。

表中的长度和范围的取值是假定C P U的字长为1 6 b i t。

C语言还提供了几种聚合类型(aggregate types),包括数组、指针、结构、共用体(联

合)、位域和枚举。这些复杂类型在以后的章节中讨论。

除v o i d类型外,基本类型的前面可以有各种修饰符。修饰符用来改变基本类型的意义,

以便更准确地适应各种情况的需求。修饰符如下:

• signed(有符号)。

• unsigned(无符号)。

• long(长型符)。

• short(短型符)。修饰符s i g n e d、s h o r t、l o n g和u n s i g n e d适用

于字符和整数两种基本类型,而l o n g还可用于d o u b l e(注意,由于long float

与d o u b l e意思相同,所以A N S I标准删除了多余的long float)。

表2 - 2给出所有根据A N S I标准而组合的类型、字宽和范围。切记,在计算机字长大于

1 6位的系统中,short int与signed char可能不等。

*表中的长度和范围的取值是假定C P U的字长为1 6 b i t。因为整数的缺省定义是有符

号数,所以s i n g e d这一用法是多余的,但仍允许使用。某些实现允许将u n s i g n

e d用于浮点型,如unsigned double。但这一用法降低了程序的可移

植性,故建议一般不要采用。为了使用方便,C编译程序允许使用整型的简写形式:

• short int 简写为s h o r t。

• long int 简写为l o n g。

• unsigned short int 简写为unsigned short。

• unsigned int 简写为u n s i g n e d。

• unsigned long int 简写为unsigned long。

即,i n t可缺省。

2.3.1

整型常量

整型常量及整常数。它可以是十进制、八进制、十六进制数字表示的整数值。十进制常数的

形式是:

d i g i t s

s

这里d i g i t s可以是从0到9的一个或多个十进制数位,第一位不能是0。八进制常数

的形式是:

0 d i g i t s

s

在此,d i g i t s可以是一个或多个八进制数(0~7之间),起始0是必须的引导符。

十六进制常数是下述形式:

0 x h d i g i t s0 X h d i g i t s

这里h d i g i t s可以是一个或多个十六进制数(从0~9的数字,并从“a”~“ “f”

的字母)。

引导符0是必须有的,X即字母可用大写或小写。注意,空白字符不可出现在整数数字之间。

表2 - 3列出了整常数的形式。

整常数在不加特别说明时总是正值。如果需要的是负值,则负号“-”必须放置于常数表达

式的前面。

每个常数依其值要给出一种类型。当整常数应用于一表达式时,或出现有负号时,常数类型

自动执行相应的转换,十进制常数可等价于带符号的整型或长整型,这取决于所需的常数的

尺寸。

八进制和十六进制常数可对应整型、无符号整型、长整型或无符号长整型,具体类型也取决

于常数的大小。如果常数可用整型表示,则使用整型。如果常数值大于一个整型所能表示的

最大值,但又小于整型位数所能表示的最大数,则使用无符号整型。同理,如果一个常数比

无符号整型所表示的值还大,则它为长整型。如果需要,当然也可用无符号长整型。

在一个常数后面加一个字母l或L,则认为是长整型。如1 0 L、7 9 L、0 1 2 L、0 11 5

L、0 X A L、0 x 4 f L等。

2.3.2 整型变量

前面已提到,C规定在程序中所有用到的变量都必须在程序中指定其类型,即“定义”。这

是和B A S I C、F O RT R A N不同的,而与P a s c a l相似。

运行结果为:

R U N

a+u=22, b+u=-1 4

可以看到不同类型的整型数据可以进行算术运算。在本例中是i n t型数据与unsingned i

nt型数据进行相加减运算。

2.4.1

实型常量

实型常量又称浮点常量,是一个十进制表示的符号实数。符号实数的值包括整数部分、尾数

部分和指数部分。实型常量的形式如下:

[digits][.digits][E|e[+|-]digits]

]

在此digits是一位或多位十进制数字(从0~9)。E(也可用e)是指数符号。小数点之前

是整数部分,小数点之后是尾数部分,它们是可省略的。小数点在没有尾数时可省略。指数

部分用E或e开头,幂指数可以为负,当没有符号时视为正指数的基数为10,如

1.575E10表示为:1.575×1010。在实型常量中不得出现任何空白符号。在不加说明的情况

下,实型常量为正值。如果表示负值,需要在常量前使用负号。下面是一些实型常量的示例:

15.75,1.575E10,1575e-2,-0.0025,-2.5e-3,25E-4

所有的实型常量均视为双精度类型。

。实型常量的整数部分为0时可以省略,如下形式是允许的:

.57,.0075e2,-.125,-.175E-2

注意字母E或e之前必须有数字,且E或e后面指数必须为整数,如e3、2.1e3.5、.e3、e

等都是不合法的指数形式。

2.4.2实型变量

实型变量分为单精度(float型)和双精度(double型)。对每一个实型变量都应再使用前

加以定义。如:

floatx,y;/*指定x,y为单精度实数*/

doublez;/*指定z为双精度实数*/

在一般系统中,一个float型数据在内存中占4个字节(32位)一个double型数据占8个

字节(64位)。单精度实数提供7位有效数字,双精度提供15~16位有效数字,数值的范

围随机器系统而异。

值得注意的是,实型常量是double型,当把一个实型常量赋给一个float型变量时,系统

会截取相应的有效位数。例如

floata;

;a=111111.111;

由于float型变量只能接收7位有效数字,因此最后两位小数不起作用。如果将a改为dou

ble型,则能全部接收上述9位数字并存储在变量a中。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1713393876a2240277.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信