C语言程序设计经典教程class2

上传人:宝路 文档编号:48103275 上传时间:2018-07-09 格式:PPT 页数:33 大小:1.02MB
返回 下载 相关 举报
C语言程序设计经典教程class2_第1页
第1页 / 共33页
C语言程序设计经典教程class2_第2页
第2页 / 共33页
C语言程序设计经典教程class2_第3页
第3页 / 共33页
C语言程序设计经典教程class2_第4页
第4页 / 共33页
C语言程序设计经典教程class2_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《C语言程序设计经典教程class2》由会员分享,可在线阅读,更多相关《C语言程序设计经典教程class2(33页珍藏版)》请在金锄头文库上搜索。

1、1第二章 数据类型、运算符与表达式 主要内容 1 基本数据类型 整型、实型、字符型 2 常用运算符及表达式 算术、赋值、其他2数据类型基本类型构造类型指针类型空类型(void)整型 (int)字符型 (char)实型(浮点型)数组类型结构体类型(struct)共用体类型(联合类型)(union)枚举类型单精度型(float)双精度型(double)1 基本数据类型31.0 常量与变量 常量 在程序运行过程中,其值不能被改变 的量称为常量。 常量有不同的类型 整型常量:15、-8、0等 实型常量:3.7、-8.2等 字符型常量:a、A、+、5等 字符串常量:“Hello“、“a“、“123“等4

2、符号常量 用一个标识符代表一个常量。 语法 #define 符号常量名 字符序列如:#define PI 3.1415926 main() float r,area; scanf(“%f“, area=PI*r*r; printf(“圆的面积为:%fn“,area); 说明 习惯上,符号常量名用大写,以便与变量名相区分。 可读性好,含义清楚。 修改方便。在需要改变一个常量时能做到“一改全改”。5 变量 其值可以改变的量称为变量。 变量说明语法:类型名 变量名; 变量也有不同的类型 一个变量应该有一个名字,即变量名,用来标识在 内存中所分配的存储单元。 如: int a; 向变量名赋值,即是向该

3、存储单元中存入数据,该 数据就是变量的值。 如: a=10; 习惯上,变量名用小写。 变量“先定义、后使用”a10106 变量“先定义、后使用” 目的: 1. 保证程序中变量名的正确使用。int student;studemt=10;/* Error */2. 为变量分配适当的内存单元。int a; float b;3. 根据所定义的变量的类型,检查对该变量所 进行的操作是否合法。int a,b; float c;a%b /* OK */a%c /* Error */ab71.1 整型n整型常量p十进制整数。 如:123、-456、0 p八进制整数。以0开头的数是八进制数(使用的数 码为:07

4、) 如:0123=(123)8=(83)10n在8进制数中不使用8和9这两个数码,如018、094均为 非法。p十六进制数。以0x开头的数是十六进制数(使用的 数码为:09、af或AF)。 如:0x123=(123)16=(291) 10n对于0x1a、0xabcd、0x0FFF等都是合法的16进制数;n而0h0fff、0xfg等都是非法的 。8n整型变量p整型分类、所占字节数及数据范围数据类型符占字节数 (位数)取值范围int2(16)-3276832767即-215(215-1)short int2(16)-3276832767即-215(215-1)long int4(32)-21474

5、836482147483547即-231(231-1)unsigned int2(16)065535即0(216-1)unsigned short int2(16)065535即0(216-1)unsigned long int4(16)04294967295即0(232-1)9n 整型数据在内存中的存储方式整型数据在内存中是以二进制形式存放的 。 若定义了一个整型变量i:int i=10;图 (a)是数据存放的示意图,图 (b)是数据在内存中实际存放的情况;i10 (a)i0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 (b)10n实际上,整型数值是以补码表示的。 正数的补码

6、 与其原码相同 负数的补码 将该数的绝对值的二进制形式按位取反再加1 例如求-10的补码:0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 01 1 1 1 1 1 1 1 1 1 1 1 0 1 0 11 1 1 1 1 1 1 1 1 1 1 1 0 1 1 010的原码取反再加1得 -10的补码11例2.1 整数9的机器表示 作为int, 00000000 00001001 作为short int, 00000000 00001001 作为long int, 00000000 00000000 00000000 00001001 以上第一位为符号位, 表示正整数。 以下第一位为

7、正常的数据位, 非符号位。 作为unsigned int, 00000000 00001001 作为unsigned short int, 00000000 00001001 作为unsigned long int, 00000000 00000000 00000000 00001001 12n整型常量的类型 在程序中书写一个整型常量时,它占几个字节? C是这样处理的: 如果其值在-3276832767范围内,认为它是int 类型(占2个字节),否则认为它是long类型(占4个 字节)。 当需要把一个仅占两个字节的整型常量让它占4 个字节时,可以在该数据的后面加上字母L(大 小写均可)。如:l

8、ong a=10L; 而:long b=10;b b131.2 实型n实型常量实数在C中也称浮点数。实数有两种表示形式 。p十进制数形式,也称小数形式。如:0.58、 .58、 58.0、 85.p指数形式,也称科学记数法。如: 12.3e3、123E2、1.23e+4、0.12E+5 都代表1.23104。但要注意字母e(或E)之前必须有数字,且e后面指数必须为整数,如:e3、2.1e3.5、.e3、e等都不是合法的实数 。14n实型变量p实型分类、所占字节和取值范围 p对于实型常量不区分float型和double型。 一个实型常量可以赋给一个float型或 double型变量。根据变量的类

9、型截取实型 常量中相应有效数字。 实型变量的说明及精度分类数据 类型占字 节数小数位 长度精度 (有效位 )取值范围单精度float467约10-381038 双精度double861516约10-3081030815例2.2 实型数据的舍入误差main() float a,b; a=123456.789e5; b=a+20; printf(“%f,%f“,a,b); 结果:12345678848.000000,12345678848.00000016误差原因分析 b的理论值应是12345678920, 一个实型变量只能保证的有效数字是7位, 后面的数字是无意义的,并不准确表示该数, 从结果看

10、出,把20加在后几位上,是无意义的, 应当避免将一个很大的数与一个很小的数直接相加 减,否则就会“丢失”小的数。 与此类似,用程序计算1.0/3*3的结果并不等于1。171.3 字符型n字符常量p普通字符常量 用单引号括起来的一个字符,如a、H、 printf(“ftbbg“); 运行结果: xbcde fga a1 1区区2 2区区b bd dc ce ex xf fg g19n字符变量p字符类型分类、所占字节和取值范围 n字符型数据与整型数据的关系 将一个字符常量赋给一个字符变量,并不是 把该字符本身放在内存单元中去,而是将该 字符的ASCII码放到存储单元中,因此字符型 数据也可以象整型

11、数据那样使用。 如: char ch;ch=A; printf(“%c,%dn“,ch,ch);chch6565数据类型字节长度取值范围 signedchar1-128127之间的整数 unsigned char10255之间的整数20例2.4 字符型数据与整型数据的关系#include “stdio.h“ main() char ch;int i;ch=A;i=65;printf(“%c,%cn“,ch,i); /* i的值理解成字符输出,65对应的字符为A */printf(“%d,%dn“,ch,i); /* 将ch中存储的值(即A的ASCII码)直接输出 */ch=65;i=A; /*

12、 字符型数据与整型数据通用 */ printf(“%c,%cn“,ch,i);printf(“%d,%dn“,ch,i);i=321;ch=i;printf(“i=(%d,%c)n“,i,ch); i ichch3216521n字符串常量 用双引号括起来。“Hello“、“a“、“123“等 。 不要把字符常量与字符串常量相混淆。如有 : char ch1,ch2,ch3; ch1=a;/* ok */ ch2=“a“;/* error */ ch3=“CHINA“;/* error */ 字符串的长度:双引号括起来的字符个数。如 : “CHINA“的长度为5; “abctxyz“的长度为7(

13、其中t表示一个字符); “是空字符串,长度为0。 22 字符串的存储 除了要存储双引号里面的字符之外,C规定还要 多存储一个字符0,作为“字符串的结束标志”。 如字符串“CHINA”的存储情况为:长度为5,而实际需要6 个字节。 思考 请说明“5“, 5,5的区别,它们各占几个字节的存 储空间,在内存中是如何存储的。 字符串的结束标志字符串的结束标志23变量的初始值 在使用变量时,如果它出现在表达式中, 事先必须得有一个初始值;否则其值将是 一个不确定的值。 变量的初始值可以通过赋值语句、读语句 和变量初始化来获得。如: int x,y,z; x=5; scanf(“%d“, z=x+y;24

14、 变量的初始值也可能用变量初始化来获得,即 在说明变量的同时给变量赋值。 变量说明的完整语法 类型名 变量名=初始值; 如: int a=3; float f=4.5; char c1=a,c2; 如果对几个变量赋以同一个初值,不能写成: int a=b=c=1;/* b、c没有定义*/ 应写成: int a=1,b=1,c=1; 252.1 算术运算符及其表达式由算术运算符与运算量构成的表达式称算术表达式。 n基本算术运算符 +(加)、-(减)、*(乘)、/(除)、%(取余) 注意,两个整数相除的结果仍为整数。 “%“是取余(取模)运算,只适合于整型数据 。 以被除数的符号作为余数的符号。2

15、 常用运算符及表达式26n自增(+)、自减(-)运算符 只能用在变量的前面和后面。如:m=3; m1=m+; m2=+m;前缀形式后缀形式 自增+ii+ 自减-ii- 运算 时机在使用i之前,先使i的 值加(减)1在使用i之后,再使i 的值加(减)1mmm1m1m2m23 3 3 3 4 45 5 5 5272.2 赋值运算符及其表达式n赋值运算符和赋值表达式 赋值运算符即“=”,由它构成的表达式称 赋值表达式。 其语法格式为:变量名=表达式 其作用是将“=”右边表达式的值赋给左边的 变量。如:a=1; a=a+5;既然是表达式,表达式就有一个值。如: 2+5是算术表达式,值为7; a=3是赋值表达式,C规定这个值就是送给左侧 变量的值,即表达式a=3的值为3。 28n复合赋值运算符及其表达式 赋值运算符可以与所有的双目运算符合在 一起,构成一种新的运算符(如“+=”、“-=” 、“*=”等),称复合的赋值运算符。如: a+=3p*=5 h/=2+1 a=a+3 p=p*5 h=h/(2+1) a+=3可以理解为:把3加到a里面去; p*=5可以理解为:把p扩大5倍。 292.3 其

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号