下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言第四节一、数据类型C语言要求在定义所有的变量时都要指定变量的类型。常量也是区分类型的。问题:为什么在用计算机运算时,要指定数据的类型呢?在计算机中, 数据是存放在存储单元中的, 它是具体存在的 (在数学中, 数和数的运算都是抽象的) 。而且,存储单元是由有限的字节构成的,每一个存储单元中存放数据的范围是有限的,不可能存放“无穷大”的数,也不能存放循环小数。例:计算和输出1/3 :printf( “%f”,1.0/3.0);得到的结果是 0.333333,只能得到 6 位小数,而不是无穷位的小数。注意:用计算机进行的计算不是抽象的理论值的计算,而是用工程的方法实现的计算,在许多情况下只能
2、得到近似的结果。所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度 (占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。基本整型 (int)短整型 (short int)整型类型长整型 (long int)基本类型字符型 (char)单精度浮点型 (float)浮点类型数据类型枚举类型(enum)双精度浮点型 (double)空类型 (void)指针类型 (*)数组类型 ()派生类型结构体类型 (struct)函数类型不同类型的数据在内存中占用的存储单元长度是不同的,Visual C+6.0 为 char 型 (字符型)数据分配1 个字节,为 int 型 (基本整型
3、)数据分配4 个字节。在存储单元中的存储方式是:用整数的 补码形式存放。一个正数的补码是此数的二进制形式,如5 的二进制形式101,如果用两个字节存放一个整数,则在存储单元中数据形式是:0000000000000101如果是一个负数, 则应先求出负数的补码。 求负数补码的方法是: 先将此数的绝对值写成二进制形式,然后对其所有各二进位按位取反,再加一。1-5 的补码:5 的原码: 0000000000000101按位取反: 1111111111111010再加一:1111111111111011(在存放整数的存储单元中,最左面一位是用来表示符号的,如果该位为0,表示数值为正;如果该位为1,表示数
4、值为负。 )1. 整型数据的分类1) 基本整型 (int)编译系统分配给int 整形数据2 个字节或4 个字节 (由 C 编译系统决定 )。2)短整型 (short int)类型名为 short int 或 short 。用 Visual C+6.0,编译系统分配给 int 数据 4 个字节,短整型 2 个字节。3) 长整型 (long int)类型名为 long int 或 long 。一个 long int 型变量的值的范围是 -231( 231-1),即-21474836482147483647(Visual C+ 6.0), 编译系统分配给long 数据 4 个字节。2. 字符型数据1
5、) 字符与字符代码字符与字符代码并不是任意写一个字符, 系统都能识别的。 例如圆周率 在程序中是不能识别的, 只能使用系统的字符集中的字符, 目前大多数系统采用 ASCII字符集。基本包括 127 个字符:字母:大写英文字母 AZ,小写英文字母 az。数字: 09。专门符号: 29个: !”#&()*+,-/:;?_|空格符:不能显示的字符:空( null )字符( 0 表示)、警告(以 a 表示)、退格(以 b 表示)、回车(以 r表示)等。前已说明,字符是以整数形式 (字符的ASCII代码)存放在内存单元中的。例:大写字母 A的 ASCII代码是十进制数65,二进制形式为1000001小写
6、字母 a的 ASCII代码是十进制数97,二进制形式为1100001数字字符 1的 ASCII代码是十进制数49,二进制形式为0110001可以看到,以上的字符的ASCII代号码最多用7 个二进制位既可以表示。所有 127 个字符都可以用7 个二进位表示 (ASCII代码为 127 时,二进制形式为1111111,7 位全是 1)。所以在 C 中,指定一个字节( 8 位)存储一个字符。此时,字节中第一位置为 0。如小写字母 a在内存中的存储情况是01100001 。注意:字符 1和整数 1 是不同的概念,字符1只是代表一个形状为1的符号,在需要时按原样输出,在内存中以ASCII 码形式存储,占
7、1 个字节,而整数1是以整数存储方式(二进制补码方式)存储的,占2 个或者 4 个字符。整数运算1+1 等于 2,而字符 1+1并不等于整数2 或字符 2而是 b。2)字符变量字符常量是用类型符char 定义字符变量。如:charc = ?定义 c 为字符型变量并使初值为?。?的 ASCII代码是 63,系统把整数63 赋给变量 c。可以把 0127 之间的整数赋给一个字符变量。23)浮点型数据浮点型数据是用来表示具有小数点的实数的。为什么在C 中把实数成为浮点数呢?在 C 语言中, 实数是以指数形式存放在存储单元中的。一个实数表示为指数。可以有不止一种形式,如3.1416 可以表示为: 3.
8、1416 100,0.31416 101,0.031416 102,31.416 10-1 等,它们代表同一个值。可以看到:小数点的位置是可以在31416 中来回浮动的,只要在小数点位置浮动的同时改变指数的值,就可以保证它的值不会改变。 由于小数点位置可以浮动,所以实数的指数形式成为浮点数。浮点数类型包括 float(单精度浮点型) 、 double(双精度浮点型 )、 long double(长双精度浮点型 )。a)float 型。编译系统为每一个 float 型变量分配 4个字节, 存储时, 系统将实型数据分成小数部分和指数部分两个部分,分别存放。float 型数据能得到 6 位有效数字,
9、数值范围为 -3.410-383.4 1038。数值在 3 个范围内: -3.41038 到 -1.2 10-38; 0;1.2 10-38 到 3.4 1038b)double 型。为了扩大表示的数值范围,用8 个字节存储一个 double 型数据,可以得到 15 位有效数字,数值范围 -1.7 10-3081.7 10308。 在 C 语言中进行浮点数的算术运算时,将 float 型数据都自动转换为double 型,然后进行计算。c)long double 型。分配 16个字节。确定常量的类型整型常量:不带小数点的数值是整型常量,在Visual C+中, int 和 long int 都分
10、配 4 个字节,没有必要用long int 。浮点型常量: 凡是以小数形式或指数形式出现的实数,都是浮点型常量,在内存中以指数形式存储。二、运算符和表达式1. 基本的算术运算符 + 加法运算符- 减法运算符* 乘法运算符/ 除法运算符% 取余运算符两个实数相除的结果是双精度实数,两个整数相除的结果是整数。但是,如果除数或被除数中有一个为负值,则舍入的方向是不固定的。如:-5/3 ,有的系统得到的结果为 -1,有的是 -2。 VC 采取“向零取整”的方法,即5/3=1 , -5/3=-1 ,取整后向零靠拢。%运算符要求参加运算要求参加运算的运算对象为整数,结果也是整数。 如 8%3,结果为 2。
11、除%以外的运算符的操作数都可以是任何算术类型。2.自增、自减运算符作用是使变量的值加1 或减 1,例如:+i,- -i(在使用 i 之前,先使i 的值加(减) 1)i+,i - -(在使用 i 之后,使i 的值加(减)1)注意:自增运算符(+)和自减运算符(- -)只能用于变量,而不能用于常量或表达式 ,如 5+或(a+b)+都是不合法的。因为5 是常量,常量的值不能改变。(a+b)+也不可能实现,假如a+b 的值为 5,那么自增得到的6 无变量可供存放。33. 不同类型数据间的混合运算如果一个运算符的两侧的数据类型不同, 则先自动进行类型转换, 使二者具有同一种类型,然后进行运算。因此整型、
12、实型、字符型数据间可以进行混合运算。规律为:+、 -、 * 、 / 运算的两个数中有一个数位float 或 double 型,结果是double 型。如果 int 型与 float 或 double 型数据进行运算,先把int 型和 float 型数据转换为double型,然后进行运算,结果为double 型。字符 (char)型数据与整型数据进行运算,就是把字符的ASCII 代码与整形数据进行运算。字符数据可以直接与整型数据进行运算。如果字符型数据与实型数据进行运算,则将字符的ASCII代码转换为double 型数据,然后进行运算。例 1:给定一个大写字母,要求用小写字母输出。#includ
13、e void main()char a,b;printf( “请输入一个大写字母 : ”); scanf(“%c”,a);b = a + 32;printf( “大写字母是 :%c,小写字母是 :%c”,a,b);4. 强制类型转换运算符可以利用强制类型转换运算符将一个表达式转换成所需类型。例如:(double)a(将 a 转换成 double 类型 )(int)(x+y)(将 x+y 的值转换成 int型 )(float) ( 5%3) (将 5%3 的值转换成 float型 )其一般形式为(类型名 )(表达式 )注意,表达式应该用括号起来。如果写成(int) x+y 则只将 x 转换成整型
14、,然后与 y 相加。需要说明的是, 在强制类型转换时,得到一个所需类型的中间数据,而原来变量的类型未发生变化。例如:float x;int a;a = (int) x如果已定义 x 为 float 型变量, a 为整型变量,进行强制类型运算(int) x 后得到一个 int 类型的临时值,它的值等于x 的整数部分,把它赋给a,注意 x 的值的类型都未变化,仍为 float 型。该临时值在赋值后就不再存在了。两种类型转换:一种是在运算时不必用户干预,系统自动进行的类型转换一种强制类型转换,当自动类型转换不能实现目的时,可以用强制类型转换。如:%运算符要求两侧均为整型量,若 x 为 float 型,则 x%3 不合法,必须用 (int) x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省韶关市乐昌市乐昌实验学校2022-2023学年七年级上学期期中历史试题(含答案)
- 2027年劳动合同空白合同二篇
- 2027年猎头采用合同二篇
- 合规转利润:降本增效全指南(2026)《GBT 36430-2018物联网家电描述文件》
- 合规转利润:降本增效全指南(2026)《GBT 36119-2018精准扶贫 村级光伏电站管理与评价导则》
- 合规转利润:降本增效全指南(2026)《GBT 36012-2018锄草机器人性能规范及其试验方法》
- 《等量代换》教学实录
- 壁画制作工岗前工作技巧考核试卷含答案
- 汽油煤油柴油加氢装置操作工风险评估测试考核试卷含答案
- 乐器维修工操作规范知识考核试卷含答案
- 儿童功能性腹痛诊疗指南
- 安徽省省十联考2027届高三上学期第一次教学质量测评物理试卷(含答案)
- 【小学】【秋季上】高年级【信息技术】开学第一课【课件】
- 2026年学习教育工作总结
- SG-CIM模型建设与实践
- 2026秋新教材人教版小学美术五年级上册(全册)教学设计(附目录p79)
- 人教版数学七年级新生入学摸底试卷(一)(含答案)
- 2026年考研英语(一)201真题(试卷+答案)
- 电气设备检修安全生产技术常识培训课件
- 装配式建筑预制混凝土构件质量管理标准
- 小学五年级上册音乐教案(人音版)
评论
0/150
提交评论