第二章C语言基础.ppt

上传人:本田雅阁 文档编号:2259931 上传时间:2019-03-12 格式:PPT 页数:49 大小:381.01KB
返回 下载 相关 举报
第二章C语言基础.ppt_第1页
第1页 / 共49页
第二章C语言基础.ppt_第2页
第2页 / 共49页
第二章C语言基础.ppt_第3页
第3页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第二章C语言基础.ppt》由会员分享,可在线阅读,更多相关《第二章C语言基础.ppt(49页珍藏版)》请在三一文库上搜索。

1、第二章 C语言基础,2.1 C语言的数据类型 2.2 标识符、常量和变量 2.3 基本数据类型(整型、实型、字符型、字符串) 2.4 运算符及表达式,引入:,程序=数据结构+算法 在高级程序设计语言中,对数据结构的描述是 通过数据类型的形式实现的,而对算法的描述则是 通过各种语句功能实现的。,2.1 数据类型,2.2 标识符、常量和变量,2.2.1 字符集 字符(character)是组成语言最基本的元素。C语言字符集由字母,数字,空格,标点和特殊字符组成。 字母:大、小写英文字母共52个。 数字:09共10个。 空白符:空格符、制表符、换行符等统称为空白符共3个。 标点和特殊字符:+ - *

2、 / % _ . = ? : ” ! #共25个。,2.2 标识符、常量和变量, 、$,2.2.2 标识符,概念: 用于标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。 组成: 允许用作标识符的字符有:26个英文字母(包括大小写)、数字(09)、下划线; 构成规则: 第一个字符必须是字母或下划线,后面跟任意的字母、数字和下划线; 长度:最长31个字符(最好限制在8个以内) 注意事项: 大小写敏感 不能使用关键字 命名原则:见名知意,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lot

3、us_1_2_3 char ab _above $123,M.D.John,3days,#33,char,$123,ab,2.2 标识符、常量和变量,语言中有32个关键字,不允许用户再用来定义标识符。,12个预处理命令:,define endif elif error line include ifdef ifndef pragma undef if else,2.2 标识符、常量和变量,2.2.3 常 量,概念: 常量是指在程序中其值不能被改变的量。 类型: 直接常量:如18、0、-3、4.6、-1.23、0.0、a、x、“abcd” 符号常量:用标识符表示的常量。通常习惯用大写字母表示符号

4、常量。,2.2 标识符、常量和变量,符号常量的定义形式: #define 符号常量名 常量表达式或字符串 如: #define PI 3.141592654 #define PRICE 30 注意: 符号常量在程序中不能被赋值 习惯上,符号常量名用大写字母表示,变量名用小写字母表示,以示区别。,PRICE=100;,【例】已知某产品的单价和数量,求总价格。 #define PRICE 30 main( ) int num,total; num=10; total=num*PRICE; printf(“total=%d”,total); ,total=300,2.2.4 变 量,概念: 变量指在

5、程序执行过程中其值可以改变的量。它用标识符(变量名)来表示 ,在内存中占据一定的存储单元。 变量三要素:变量名、变量类型、变量值,2.2 标识符、常量和变量,决定分配字节数 和数的表示范围,合法标识符,变量的定义形式: 类型标识符 变量名1,变量名2,.; 变量的使用:先定义,后使用,例: int a,b,c; float data;,例: int student; stadent=19; /Undefined symbol statent in function main,变量的赋值:定义时赋值;程序执行过程中赋值 变量的定义位置:一般放在函数开头,2.2 标识符、常量和变量,int a,b

6、=2; a=1;,Error:Expression syntax in function main,2.3 基本类型数据,2.3.1 整型数据 一、整型常量:即整常数。C整常数可以用以下几种形式表示:,2.3 基本数据类型,1、十进制整数:如123、0、-456等。 2、八进制整数:以0开头。如0123=(123)8=(83)10。 3、十六进制整数:以0x(0X)开头。如0x123= (123)16 =(291)10、 0x54=(84)10 。,1、整型变量的分类,根据数值的范围分为以下几种类型:,1)基本型,以int表示;,2)短整型,以short int表示,或以short表示;,3)

7、长整型,以long int表示,或以long表示;,为了充分利用变量的表数范围,又可以将变量定义为“无符号”类型和“有符号”类型。加上修饰符unsigned以指定为“无符号数”,加上修饰符signed以指定为“有符号数”;如果不指定,则隐含为有符号(signed)。实际上signed完全可以不写。,2.3 基本数据类型,2.3 基本类型数据,归纳起来,有以下六种整型变量:,2.3 基本数据类型,二、整型变量,2.3 基本数据类型,1、整型数据在内存中的存放形式,整型数据在内存中是以二进制补码形式存放的。,int i; i=10;,(a) 数据存放示意图,(b) 数据在内存中的实际存放情况,-1

8、0的原码,按位取反,加1,2、整型变量的定义,形式:类型标识符 变量列表;,注意:对变量的定义,一般放在函数开头的声明部分。,2.3 基本数据类型,int a,b; unsigned int i,j; long e,f;,3、整型数据的溢出,main( ) short a,b; a=32767; b=a+1; printf(“%d,%d, %u,%u “,a,b,a,b); ,a:,b:,32767,-32768, 32767,32768,三、整型常量 即整常数。,2.3 基本数据类型,1、整数值在-32768+32767范围内,认为是short型。,2、若超过了上述范围,而在-2147483

9、648+2147483647范围内,则认为是longh或int型。,3、在一个整常量后面加一个字母l或L,则认为是long int型常量。,4、在一个整常量后面加一个字母u或U,则认为是unsigned类型。,1)十进制整数:如123、0、-456等。 2)八进制整数:以0开头。如0123=(123)8=(83)10。 3)十六进制整数:以0x(0X)开头。如0x123= (123)16 =(291)10、 0x54=(84)10 。,1、实型数据标识符及其变量定义,实型变量分为单精度型(float)和双精度型(double)。,对每一个实型变量都应该在使用前加以定义。,如: float x,

10、y; double z;,2.3 基本数据类型,2.3.2 实型数据,2.3.2 实型数据,2、实型常量:即实数,又称浮点数。有两种表示形式:,2.3 基本数据类型,1)十进制小数形式。一般由数字和小数点组成(必须有小数点,但小数点前后的0可以省略)。例如:0.246 .246 246.0 246. 0.0 等都是正确的小数表示形式。 2)十进制指数形式。由尾数、字母E或e及指数部分组成。具体格式如下所示: 尾数e(E)指数部分 例:135e3 124e-2 -12.12e-5 .135E4 0e0 注意:字母e(E)之前必须有数字,且e(或E)后面的指数必须为整数。如e3、 .e3 、2.1

11、e3.5、e等都不是合法的指数形式。,一、字符变量,字符变量用来存放字符,且只能存放一个字符,占用一个字节(-128+127)的内存空间。类型标识符为char。 定义方法: char c1,c2; /* 定义了两个字符型变量c1、c2 */ 字符变量的赋值方法: c1=a;,2.3 基本数据类型,2.3.3 字符型数据,2.3.3 字符型数据,二、字符型常量:C语言的字符型常量有两种形式: 1、普通字符:用一对单引号(即撇号)括起来的单个字符。例如: b、Y、9、(、y。 2、用一对单引号(即撇号)括起来的以一个“”开头的转义字符,形如n,t等,意思是将反斜杠()后面的字符转变成另外的意义。如

12、 n 不代表字母n而作为“换行”符。像“换行”这种非显示字符难以用一般形式的字符表示,所以C语言规定用“转义字符”这种特殊形式表示。 常见转义字符如下表所示。,2.3 基本数据类型,2.3 基本数据类型,例. 字符型常量的输出,main() printf(“Hello!thow are you?nIm fine!n); printf(This is a cupbbbpen.n); printf(A,101); ,2.3 基本数据类型,Hello! how are you? Im fine! This is a pen. A,A,三、字符在内存中的存储形式及使用方法,1、将一个字符常量存放到一个

13、字符变量中,实际是将该字符对应的ASCII码存放到存储单元中。 char c1,c2; c1=A;c2=n; 2、字符和整型数据可以相互赋值。 3、字符数据可以字符形式输出,也可以整数形式输出。,2.3 基本数据类型,main( ) char c1; c1=65; printf(%c,%dn,c1,c1); ,A,65,main( ) char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“%c,%cn“,c1,c2); ,4、语言允许字符数据与整数直接进行算术运算。,2.3 基本数据类型,【例】编写程序实现英文字符的大小写转换。,A,B,思考:

14、将一个超过一个字节表示范围的数赋给char型,会出现什么情况?,2.3.4 字符串常量,2.3 基本数据类型,字符串常量是由一对双引号(“”)括起来的字符序列。如“How are you!”、“China”、“a”、“$123.45”等。,双引号是字符串常量的定界符。如果字符串中有双引号应使用转义字符“”来表示。如要输出字符串It is “good” ,语句应为printf(“It is “good” ”); 字符串的长度为字符序列中字符的个数,不包括两边的双引号。如字符串“How are you!”的长度是12。 不要将字符常量和字符串常量混淆。如“a“是字符串常量,a是字符常量。,说明:,

15、若:char c; c=a;,c=“a“;,规定:在每个字符串的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。规定以字符0作为字符串结束标志。0的ASCII值为0,是不可显字符,也不作任何操作,即“空操作字符”。,a,“a“,注意:写字符串时不必加0,它是系统自动加上的。,“China“,2.3 基本数据类型,2.4 运算符及表达式,2.4 运算符及表达式,运算符: 规定了对数据的基本操作。 表达式:将运算对象(常量、变量、函数等)用运算符连接起来的符合C语言语法规则的式子 如:(a-b)/c*2+a+-15%4,学习运算符应注意: 运算符功能 与运算量关系 要求运算量个数 要

16、求运算量类型 运算符优先级别 在一个表达式中如果有多个运算符时,则计算是有先后次序的,这种计算的先后次序称为相应运算符的优先级。 结合方向 当一个运算对象两侧运算符的优先级别相同时进行运算(处理)的结合方向称为运算符的结合性。按“从右向左”的顺序运算,称为右结合性;按“从左向右”的顺序运算,称为左结合性。 结果的类型,C语言的运算符,2.4 运算符及表达式,(1)算术运算符 + - * / % (2)赋值运算符 =及其扩展赋值运算符 (3)自增、自减运算符 + - (4)关系运算符 = | & (8)条件运算符 ? : (9)指针运算符 * & (10)求字节数运算符 sizeof (11)强

17、制类型转换运算符 (类型标识符) (12)成员运算符 . (13)下标运算符 (14)其它 如函数调用运算符(),C语言的运算符,2.4 运算符及表达式,(1)算术运算符 + - * / % (2)赋值运算符 =及其扩展赋值运算符 (3)自增、自减运算符 + - (4)关系运算符 = | & (8)条件运算符 ? : (9)指针运算符 * & (10)求字节数运算符 sizeof (11)强制类型转换运算符 (类型标识符) (12)成员运算符 . (13)下标运算符 (14)其它 如函数调用运算符(),2.4.1 算术运算符1、 基本算术运算符,2.4 运算符及表达式,说 明,2.4 运算符及

18、表达式, 乘法运算符是“*”,不能用或号,也不能省略。在数学中5a、5a、5a都是合法的,但在C语言中只能写成5*a。 除法运算符是“/”,不能用号表示。两个整数相除结果为整数,如7/2的结果值为3,舍去小数部分。如果参加运算的两个数中有一个数为实数,则结果是double型,因为所有实数都按double型进行运算。 取余运算符“%” 两侧的数据必须为整型数据。结果按下式计算:余数=被除数-除数*商。如7%3的结果为1。 7%1.2则是错误的。,2、算术表达式,用算术运算符、圆括号将运算对象连接起来的符合C语法规则的式子就称为算术表达式。 如:(a-b)/c*2+a+-15%4,2.4 运算符及

19、表达式, 表达式中的乘号不能省略。 表达式中只能使用合法用户标识符。例如:数学式 相应的C语言表达式应写成:3.1415926*r*r。 表达式不允许有分子分母、上下标等形式,必要时要利用圆括号保证运算的顺序。例如: 应写成:(a+b*b)/(c+d)。 表达式不允许使用方括号和花括号,只能使用圆括号帮助限定运算顺序。可以使用多层圆括号,但左右括号必须配对,运算时从内层圆括号开始,由内向外依次计算表达式的值。,3、算术运算符的优先级与结合性,2.4 运算符及表达式,4、基本类型数据间的混合运算,2.4 运算符及表达式,(1)在运算过程中,C语言遇到两种不同数据类型的数值运算时,会将某个数做适当

20、的类型转换,然后再进行运算。类型转换总是按照数据长度增加的方向逐个运算符进行,以保证精度不降低。自动类型转换 例如:表达式 5+b-x/2+y*m(假设m为int型,x为float型,y为double型 ),注意: 横向箭头表示必定的转换,纵向箭头表示当运算符两侧的数据类型不一致时将它们中低级别的类型转换成高级别的类型. 箭头方向只是级别的高低,并不是转换的过程.,2.4 运算符及表达式,m为int型,x为float型,y为double型,2.4 运算符及表达式,(2)当需要将某数据转换成指定类型时使用强制类型转换,通过类型转换运算符实现。一般形式为: (类型标识符) (表达式) 例如: (d

21、ouble)a /* 将a转换成double型 */ (int)(x+y) /* 将x+y的和转换成整型 */ (float)(10*5) /* 将10*5的积转换成float型 */,注意: 类型标识符和表达式都必须加括号(单个变量可以不加括号). (int)(x+y)与(int)x+y 无论是强制转换或是自动转换,只是为了本次运算对数据长度进行的临时性转换,不改变数据定义时的类型。 强制类型转换的优先级高于自动类型转换。,main( ) int i=1,j=5,k1,k2,k3; float x=5.7,y=2.8,z1,z2,z3; k1=(int)x; k2=(int)(x)/y; k

22、3=(int)(x/y); z1=(float)i; z2=(float)i/j; z3=(float)(i/j); printf(k1=%dn,k1); printf(k2=%dn,k2); printf(k3=%dn,k3); printf(z1=%fn,z1); printf(z2=%fn,z2); printf(z3=%fn,z3); ,【例】强制类型转换示例。,k1=5 k2=1 k3=2 z1=1.000000 z2=0.200000 z3=0.000000,2.4 运算符及表达式,#include main() int a,b,c; float s,area,temp; prin

23、tf(“please input 3 sizesn“); scanf(“%d%d%d“, ,【例】分析程序。,2.4 运算符及表达式,#include main() float a,b,c; float s,area,temp; printf(“please input 3 sizesn“); scanf(“%d%d%d“, ,正确程序应为:,2.4 运算符及表达式,2.4.2 赋值运算符1、赋值运算符和赋值表达式,2.4 运算符及表达式,赋值运算符:= 赋值表达式:用赋值运算符将一个变量和一个表达式连接起来的式子,其功能是将=右边的表达式的值存放到左边的变量中。形式为:变量标识符=表达式 注

24、意:赋值表达式 赋值语句 赋值表达式的值:即被赋值后=左边变量的值。,例 b=5 d=5+b-x/2+y*m,b=5有两层含义:一是使变量b的值为5,二是求得赋值表达式“b=5”的值为5。a=(b=5);语句执行后a的值为?,说明:,2.4 运算符及表达式, 赋值运算符“=”的左边必须是变量,不能是常量或者表达式。右边的表达式可以是常量、变量、表达式和函数调用。如y=sqrt(2)。 赋值运算符“=”不同于数学中的等号,它没有相等的含义。例如:x=x+1,其含义是取出变量x中的值加1后,再存入变量x。 赋值运算符的结合性为“右结合性”,低优先级。如: x=y=z=8 等价于 x=(y=(z=8

25、) y=a+3 先+后=,例 3=x-2*y; a+b=3;(错),2、赋值运算中的类型转换,2.4 运算符及表达式,规则:当“=”左边变量的类型和右边表达式值的类型不一致时,要将右边表达式值类型强制转换为左边变量的类型。,3、复合赋值运算符,2.4 运算符及表达式,种类:+= -= *= /= %= = = &= = |= 含义:变量 op= 表达式变量 = 变量 op 表达式 (op:+、-、*、/、%、&、|),优点:简化程序,使生成的机器代码简短。 说明:与“=” 优先级相同,也是“右结合性” 。,x*=y+8; k+=j+=i+8,2.4.3 自增(+)、自减(-)运算符,2.4 运

26、算符及表达式,作用:使变量值加1或减1 种类:前置 +i, -i (先执行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i+1或i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/j=j+1=4,k=j=4,/k=j=3,j=j+1=4,/4,/3,/c=20,a=4,/c=15,a=4,说明:,2.4 运算符及表达式, 自增、自减运算符(+、-),只能用于变量,不能用于常量和表达式,如2+或(x+y)+都

27、是不合法的。 +和-的结合方向是“右结合性”,优先级高于基本算术运算符,与负号运算符为同一优先级。例如, -i+,相当于-(i+)。j+k相当于(j+)+k。,main( ) P34 int i=5,j,k; j=+i; i=5; k=i+; printf(i=%d,j=%d,k=%dn,i,j,k); printf(j=%d,k=%dn,+j,k+); ,2.4.4 逗号运算符,2.4 运算符及表达式,形式:表达式1,表达式2,表达式n 结合性:从左向右 逗号表达式的值:等于表达式n的值 优先级别:最低,如: x=(a=3, b=5, c=b*4) t=3, t+2 (a=2*3, a*5), a+6,比较下面两式: a=(2+b,a*2,a*=5) a=2+b,a*2,a*=5,2.4.5 sizeof运算符,2.4 运算符及表达式,作用:返回变量或数据类型的字节长度 形式:sizeof(类型标识符) 或 sizeof(变量名) sizeof(double)表达式的值为8 sizeof(int)表达式的值为2 设有下列程序段: float f; int i; i=sizeof(f); 变量i的值为?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1