C/C++培训
达内IT学院
400-996-5531
C语言学习之数据类型(二)
思维导图:
C语言中要求在定义所有的变量时都要指定变量的类型。在计算中的数据都是存放在相应的存储单元中,它是具体的。我们知道存储单元是由有限的字节所构成,因此每个存储单元中存放的数据范围是有限的,为了保证不超过这个范围,我们需要对这个存储单元进行范围限定,使该存储单元只能存放这个范围内的数据,这样就不会“撑爆”这个存储单元了。这个限定就是对其进行类型指定。那么何为类型呢?
所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(所占字节数)以及数据的存储形式。不同的类型其长度和存储形式是不同的。
C语言中数据类型主要分为三类:基本类型,派生类型以及枚举类型和空类型。
其中基本类型和枚举类型变量的值都是数值,因此又统称为算术类型。算术类型和指针类型统称为纯量类型(其变量的值都是用数字来表示的)。数组类型和结构体类型统称为组合类型,共用体在同一时间内只有一个成员具有值,所以它不属于组合类型。而函数类型用来定义函数,描述一个函数的接口,包括函数返回值的类型和参数的类型。
在本部分,只介绍基本类型,剩下的类型后续慢慢会介绍,这里给出的是为了让自己脑海里有个框架,知道数据类型有哪些即可。下面开始介绍基本类型。
整型类型
包括基本整型,短整型,长整型及字符型。下面用一个表格来概括一下它们的存储空间和值的范围:
上述表格中int和unsigned int字节数有两种,这种情况是由具体的C编译系统自行决定的,TC(Turbo C 2.0)分配的是2个字节,而VC(Visual C++)分配的是4个字节。现在大多用VC。
由于计算机只能识别0和1,也就是所谓的二进制,所以所有的数据在计算机中的存储形式都是以二进制码的形式存放的。一个字节等于8个二进位。要注意,变量值在存储单元中都是以补码的形式存储的。第三小节会对二进制的原码,补码以及反码做个简单说明。
整型数据有正负之分,常用的int的是省略了signed的有符号整型,与之相反的是unsigned int无符号整型。其他整型类似见上表。注意实型类型不能用signed和unsigned修饰。
上述表格中需要理解,根据所给整型数据的范围进行选用,选用不当,可能会造成资源浪费或者“溢出”。所谓溢出就是指数据值超过规定的范围。
字符型数据
在思维导图中,将字符型放在了整型类型中,因为字符型在计算机的是以其代码(整数)形式存储的。需要注意的是字符和字符代码不能是任意的,只能使用系统字符集中的字符,一般采用ASCII字符集,除此之外还有其他基本集,他们基本都包括如下的127个字符:
上述这些字符都是以ASCII代码存放的,127个字符最多用7个二进制位就可以表示出来了,此时,第一位置为0,因此占1个字节,即8个二进制位。
字符数据在输出时原样输出。例如,整数运算1+1=2,而'1'+'1'不等于2或'2',其输出的结果就是1+1。
不仅整型变量可以用signed和unsigned修饰符来表示符号属性,字符型也可以使用。
注意:字符代码不可能出现负值,因此存储字符只用到0~127这一部分。
下面看个例子:
signed char = -5;
这条语句是正确的,但需要注意的是此时它不代表一个字符,而是作为一个字节的整型变量存储负整数。
C标准并未规定char是按照signed char还是unsigned char处理,由各自编译系统决定。这是与其他整型变量的处理方法是不同的。VC是按照signed char处理的,可以通过下述代码来测试:
char c = 255;
printf("%d",c);
若成功输出255,则系统是按照unsigned char处理的,否则会弹出警告。
下面看三个实际运行的例子:
例1:
运行结果:
例2:
运行结果:
注:a和A的ASCII码值相差32,即ASCII码值:'a' = 'A'+32
例3:
运行结果:
注:C标准中只要求long型数据长度不短于int型,short型不长于int型。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved