1、12教学目标教学目标o掌握掌握C语言标识符的组成语言标识符的组成o理解理解C语言的基本数据类型语言的基本数据类型o掌握变量定义的方法掌握变量定义的方法o掌握常用的运算符的使用掌握常用的运算符的使用o掌握混合运算的数据转换方法掌握混合运算的数据转换方法32.1 C语言的数据类型语言的数据类型o基本类型基本类型n整整 型:短整型(型:短整型(short)、整型()、整型(int)、)、长整型长整型longn浮点型:单精度型(浮点型:单精度型(float)、双精度型)、双精度型(double)n字符类型字符类型(char)(char)o构造类型:数组、结构体、共用体、枚举构造类型:数组、结构体、共用
2、体、枚举o指针类型指针类型42.2 常量与变量常量与变量 o2.2.1标识符命名标识符命名o2.2.2常量常量o2.2.3变量变量52.2.1标识符命名标识符命名o标识符:字符序列的总称。在标识符:字符序列的总称。在C语言里用标语言里用标示符来表示常量、变量、函数和数据类型的示符来表示常量、变量、函数和数据类型的名字名字 n字母、数字和下划线组成;字母、数字和下划线组成;n第一个字符不能是数字字符;第一个字符不能是数字字符;n不能是标准字符(关键字);不能是标准字符(关键字);6举例举例osum oSum oM.D.Johnodaodateo3days ostudent_name o#33 o
3、lotus_1_2_3 ochar oab o_above o$123 X X X X X X 72.2.2常量常量o常量:在程序运行过程中其值不发生改变的量常量:在程序运行过程中其值不发生改变的量n直接常量直接常量n符号常量符号常量:用一个标识符来表示常量:用一个标识符来表示常量#define#define 符号常量符号常量 常量值常量值#define PRICE 30#include int main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);return 0;运行结果:运行结果:total=300total=
4、300 8o使用符号常量的优点使用符号常量的优点 n可以使程序更清晰易读可以使程序更清晰易读 n程序修改更加容易程序修改更加容易 o通常用大写字母表示符号常量,小写字母表通常用大写字母表示符号常量,小写字母表示变量,以便区别示变量,以便区别 92.2.3变量变量o变量:在程序运行过程中其值可以发生改变的量变量:在程序运行过程中其值可以发生改变的量n变量名变量名n变量类型变量类型n变量的值变量的值o定义形式定义形式n类型名类型名 变量名变量名1,变量名,变量名2,变量名,变量名n;int a,b,c;char ch;double d,f;102.3整型数据整型数据 o整型常量整型常量:整数(十进
5、制常量、八进制常量和十:整数(十进制常量、八进制常量和十六进制常量)六进制常量)类型类型组成组成组成规则组成规则举例举例十进制十进制数字数字0909非非0 0数字开头数字开头12 -1234+1012 -1234+10八进制八进制数字数字07070 0数字开头数字开头012 012 十六进制十六进制数字数字0909字母字母afaf(或(或AFAF)0 x0 x或或0X0X开头开头0 x10 0 x12f0 x10 0 x12f(1 1)常量前面的)常量前面的“+”+”和和“-”-”表示数的正、负。表示数的正、负。(2 2)常量也有类型,正型常量默认是)常量也有类型,正型常量默认是intint型
6、(即有符号整数)型(即有符号整数)(3 3)在数的后面加上字母)在数的后面加上字母u u或或U U表示无符号整数,加上字母表示无符号整数,加上字母l l或或L L表示长整型数表示长整型数112.3.2整型变量整型变量 o整型数据在内存中的存储形式:整型数据在内存中的存储形式:n整型数据在内存中是以二进制补码的形式存放整型数据在内存中是以二进制补码的形式存放 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0符符号号位位对于对于4 4个字节的整数个字节的整数-12-1212o整型变量的分类整型变量的分类 分类分类有无符号
7、有无符号位数位数取值范围取值范围短整型短整型shortshortunsignedunsigned(无)(无)1616065535065535signedsigned(有)(有)1616-3276832767-3276832767整型整型intintunsignedunsigned(无)(无)1616或或32320655350655350429496729504294967295signedsigned(有)(有)1616或或3232-3276832767-3276832767-21474836482147483647-21474836482147483647长整型长整型longlongunsi
8、gnedunsigned(无)(无)32320429496729504294967295signedsigned(有)(有)3232-21474836482147483647-21474836482147483647注:判断某一数据类型占内存的字节数可用注:判断某一数据类型占内存的字节数可用sizeof(数据类型说明数据类型说明)来计算来计算13o整型变量的定义方法整型变量的定义方法 n符号说明符号说明 变量名表;变量名表;unsigned short a,b;signed short a,b;unsigned int a,b;int a,b;unsigned long a,b;142.4浮点
9、型数据浮点型数据 o浮点型常量浮点型常量:实型常量或实数,它只有十进:实型常量或实数,它只有十进制形式,全部都是有符号数制形式,全部都是有符号数n小数形式:小数形式:09,小数点和正负号表示,小数点和正负号表示n指数形式:指数形式:09、小数点、小数点、+-号和字母号和字母e/E 说明:说明:(1 1)浮点型常量的默认类型是)浮点型常量的默认类型是doubledouble(2 2)在常量后面加)在常量后面加f f或或F F指定为指定为floatfloat型型 (3 3)指数必须为整数)指数必须为整数(4 4)e/Ee/E之前必须有数字之前必须有数字152.4.2浮点型变量浮点型变量o存储形式存
10、储形式 数数据据符符号号位位小小数数部部分分指指数数符符号号位位指指数数部部分分16o浮点型变量的分类浮点型变量的分类n单精度(单精度(float)n双精度(双精度(double)n长双精度(长双精度(long double)o浮点型变量定义方法浮点型变量定义方法 n类型说明符类型说明符 变量名列表;变量名列表;float a,b,c;double a,b,c;long double a,b,c;1)浮点型数据的有效数字位有限制)浮点型数据的有效数字位有限制2)有效位以外的数字将被舍去)有效位以外的数字将被舍去172.5字符型数据字符型数据 o字符常量字符常量:用用单引号单引号括起来的单个括起
11、来的单个普通字普通字符符或或转义字符转义字符n单引号中的字符不能是单引号(单引号中的字符不能是单引号()和反斜杠)和反斜杠()n字符是按其所对应的字符是按其所对应的ASCII码值来存储的,一码值来存储的,一个字符占一个字节(即个字符占一个字节(即8位)位)18o字符串常量字符串常量:一对:一对双引号双引号(“”“”)括起来的)括起来的一串字一串字符符 o字符串常量在内存中存储:字符串常量在内存中存储:n保存每个字符的保存每个字符的ASCII值值n系统自动在字符串的末尾加一个串结束标志系统自动在字符串的末尾加一个串结束标志C Ch h i i n n a a 0 0字符串:字符串:ChinaCh
12、ina“A”和和A的区别?的区别?19o转义字符转义字符:用:用反斜杠反斜杠后面跟一个字符或一个八进后面跟一个字符或一个八进制或十六进制数表示制或十六进制数表示 转义字符转义字符功能与意义功能与意义ASCIIASCII值值aa响铃响铃7 7bb退格退格8 8f f换页换页1212nn换行换行1010r r回车(返回到当前行首)回车(返回到当前行首)1313t t水平制表水平制表9 9vv垂直制表垂直制表11 1100ASCIIASCII为为0 0的字符的字符0 0 字符字符 9292字符字符3939 字符字符 3434dddddd八进制表示的八进制表示的ASCIIASCII码的字符码的字符三位
13、八进制三位八进制xhhxhh十六进制表示的十六进制表示的ASCIIASCII码的字符码的字符两位十六进制两位十六进制20例例 转义字符举例转义字符举例#includeint main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);return 0;运行结果:运行结果:A B CI say:”How are you?”C ProgramTurbo C例例 int main()printf(“Yb=n”);return 0;运行结果:运行结果:屏幕显示:屏幕显示:=打印机输出:打
14、印机输出:21o字符变量字符变量n字符变量用来存放字符,它只能存放字符变量用来存放字符,它只能存放一个字符一个字符,不能存放字符串不能存放字符串 o字符变量的定义形式字符变量的定义形式 nchar 变量名表;变量名表;char c1,c2;char c1,c2;#includeint main()char c1=a,c2=b;c1=c1-(a-A);c2=c2-(a-A);printf(%c%cn,c1,c2);return 0;程序运行结果:程序运行结果:A B222.6运算符和表达式运算符和表达式o2.6.1算术运算符算术运算符o2.6.2自增和自减运算符自增和自减运算符o2.6.3关系和
15、逻辑运算符关系和逻辑运算符o2.6.4位运算符位运算符o2.6.5 条件运算符条件运算符o2.6.6 逗号运算符逗号运算符o2.6.8 复合赋值运算符复合赋值运算符232.6.1算术运算符算术运算符o算术运算符:算术运算符:+、-、*、/、%o说明:说明:n两个整数相除,所得商仍然为整数,舍去小数两个整数相除,所得商仍然为整数,舍去小数部分,即部分,即3/2结果是结果是1,而不是,而不是1.5n取余运算要求取余运算要求运算符两端都必须为整型数据运算符两端都必须为整型数据,浮点数据不能进行取余运算浮点数据不能进行取余运算n除数或被除数中有一个是负数,取余运算的结除数或被除数中有一个是负数,取余运
16、算的结果可根据公式果可根据公式m=pq+r 得到余数得到余数o优先级:优先级:*、/、%的优先级高于的优先级高于+和和-o结合性:从左向右结合性:从左向右rpqm245+39-25*43/44%3-5%2872001-1252.6.2自增和自减运算符自增和自减运算符 o+:变量自加:变量自加1o-:变量自减:变量自减1o前置运算:前置运算:n+在变量的前面:变量先进行加在变量的前面:变量先进行加1运算,然后运算,然后再参与其它运算再参与其它运算n-在变量的前面:变量先进行减在变量的前面:变量先进行减1运算,然后再运算,然后再参与其它运算参与其它运算int x=5,y=6;+x -y+x为为6,
17、x值为值为6 -y 为为5,y值为值为526o后置运算:后置运算:n+在变量的后面,则先参与其它运算,然后在变量的后面,则先参与其它运算,然后变量再进行加变量再进行加1运算运算n-在变量的后面:则先参与其它运算,然后变在变量的后面:则先参与其它运算,然后变量再进行减量再进行减1int x=5,y=6;+x -y x+为为6,x值为值为6 y-为为6,y值为值为527o说明说明n+,-运算只能用于变量,不能用于常量和表达式运算只能用于变量,不能用于常量和表达式n+,-运算的优先级为运算的优先级为2级,高于级,高于*、/、%运算运算n+,-运算的结合性是从右向左运算的结合性是从右向左 o前置运算和
18、后置运算可能带来副作用前置运算和后置运算可能带来副作用 nx+y n在函数中作为参数:在函数中作为参数:printf(“%d,%dn”,i,i+)n(+i)+(+i)+(+i):在:在TC2.0和和VC+6.0的结果是不一样的结果是不一样 28例例2.6:前置和后置运算前置和后置运算#includeint main()int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(%d,%d,%d,%dn,i,j,m,n);return 0;程序运行结果:程序运行结果:9,11,9,10292.6.3关系和逻辑运算符关系和逻辑运算符运算符运算符符号符号含义含义举例举例优先级优先级结
19、合性结合性关系运算符关系运算符大于大于54,xy54,xy6 6从左向右从左向右5,x5,x=大于等于大于等于5=4,x=y5=4,x=y6 6从左向右从左向右=小于等于小于等于5=4,x=y5=4,x3&x3&x=811 11从左向右从左向右|或或x5x51212从左向右从左向右!非非!(x5)!(x5)2 2从右向左从右向左30pq!p!q p&q p|q110011100101011001001100逻辑运算真值表逻辑运算真值表(1 1)关系和逻辑运算符的关键是)关系和逻辑运算符的关键是TrueTrue(真)和(真)和FalseFalse(假)(假)(2 2)C C语言中,非语言中,非0
20、 0为真,为真,0 0为假为假 312.6.4位运算符位运算符o按位运算时,必须将运算对象转化为二进制按位运算时,必须将运算对象转化为二进制o位运算必须是整型和字符型数据位运算必须是整型和字符型数据 符号符号含义含义举例举例优先级优先级结合性结合性&按位与5&48从左向右|按位或5|410从左向右按位异或549从左向右按位反52从右向左按位右移1025从左向右按位左移10b?a:b 1(0)0(0)1(0)xyxx33o说明:说明:n运算对象运算对象1、运算对象、运算对象2、运算对象、运算对象3可以是任可以是任意类型,一般运算对象意类型,一般运算对象1为关系或逻辑运算对象为关系或逻辑运算对象的
21、式子,其类型可以相同,也可以不相同。的式子,其类型可以相同,也可以不相同。n条件运算符的优先级为条件运算符的优先级为13级级n条件运算符的结合性是从右向左结合的条件运算符的结合性是从右向左结合的342.6.6 逗号运算符逗号运算符o定义:定义:用逗号把几个运算对象连接起来用逗号把几个运算对象连接起来 o格式:格式:n运算对象运算对象1,运算对象,运算对象2,运算对象,运算对象no功能:功能:n先计算运算对象先计算运算对象1的值,再计算运算对象的值,再计算运算对象2的值,的值,直到最后计算运算对象直到最后计算运算对象n的值的值 x=5*6,x+10 a=3,b=4,a+,b+,a+b 40 9
22、说明:说明:(1 1)逗号运算符的优先级是)逗号运算符的优先级是1515。(2 2)逗号运算符的结合性是从左向右)逗号运算符的结合性是从左向右352.6.7 赋值运算符赋值运算符o赋值运算符:赋值运算符:=o格式:格式:变量变量=运算对象运算对象o功能:把右边运算对象的值赋给左边变量功能:把右边运算对象的值赋给左边变量 o赋值运算符赋值运算符“=”和判断相等(和判断相等(=)的区别)的区别 o赋值运算符的优先级为赋值运算符的优先级为14级级 o赋值运算符的结合性是从右向左赋值运算符的结合性是从右向左 o赋值中的类型转换以左边变量的类型为主赋值中的类型转换以左边变量的类型为主 362.6.8 复
23、合赋值运算符复合赋值运算符o定义:复合赋值运算符是在赋值的同时,进定义:复合赋值运算符是在赋值的同时,进行了运算行了运算 o格式:格式:变量变量 OP=运算对象运算对象 相当于:变量相当于:变量=变量变量OP(运算对象)(运算对象)o优先级:优先级:14o结合性:从右向左结合性:从右向左37运算符运算符含义含义举例举例优先级优先级结合性结合性+=+=加赋值加赋值x+=5x+=5相当于相当于x=x+5x=x+51414从右向左从右向左-=-=减赋值减赋值x-=5x-=5相当于相当于x=x-5x=x-51414从右向左从右向左*=乘赋值乘赋值x x*=5=5相当于相当于x=xx=x*5 51414
24、从右向左从右向左/=/=除赋值除赋值x/=5x/=5相当于相当于x=x/5x=x/51414从右向左从右向左%=%=取余赋值取余赋值x%=5x%=5相当于相当于x=x%5x=x%5 1414从右向左从右向左&=&=按位与赋值按位与赋值x&=5x&=5相当于相当于x=x&5x=x&51414从右向左从右向左=按位异或赋值按位异或赋值x=5x=5相当于相当于x=x5x=x5 1414从右向左从右向左|=|=按位或赋值按位或赋值x|=5x|=5相当于相当于x=x|5x=x|51414从右向左从右向左=按位右移赋值按位右移赋值x=5x=5相当于相当于x=x5x=x51414从右向左从右向左=按位左移赋
25、值按位左移赋值x=5x=5相当于相当于x=x5x=x51414从右向左从右向左382.7 表达式求值表达式求值o2.7.1 算术表达式算术表达式o2.7.2 赋值表达式赋值表达式o2.7.3 关系表达式和逻辑表达式关系表达式和逻辑表达式392.7.1 算术表达式算术表达式o定义:定义:用算术运算符号将运算对象(常量、用算术运算符号将运算对象(常量、变量、函数等)、圆括号连接起来的式子变量、函数等)、圆括号连接起来的式子*7%12)3/(aba*7%12)3/(aba25X40o表达式的求值表达式的求值*7%12)3/(aba*7%12)3/(aba41597485486a=10b=341o数学
26、公式数学公式 的的C语言表示语言表示acb42baba211xcabb*4*)/()(babasqrt)*1/(1xx42o表达式值的类型表达式值的类型n同一表达式中的不同类同一表达式中的不同类型常量及变量,均应转型常量及变量,均应转换为同一类型的量换为同一类型的量 nC语言的编译程序将所有语言的编译程序将所有操作数转换为与最高类操作数转换为与最高类型操作数同类型型操作数同类型 doublefloatlongunsignedintshortchar高高低低自动类型转换自动类型转换43o强制类型转换强制类型转换n(类型名)(表达式)(类型名)(表达式)n原来变量的数据类型不发生变化原来变量的数据
27、类型不发生变化(int)(x+y)(int)x+y(double)(3/2)(int)3.6 精度损失问题精度损失问题较高类型向较低类型转换时可能发生444/2)%(int)(*3%yxaxdoubleint7.27int1int7int2int1intint40double2.5double2.5例例2.8:已知已知int a=7;float x=2.5,y=4.7;计算表达式的值;计算表达式的值452.7.2 赋值表达式赋值表达式o定义:定义:赋值运算符将一个变量和表达式连接赋值运算符将一个变量和表达式连接起来构成的式子起来构成的式子 o一般形式:一般形式:=将表达式的值求出来,赋给左边的
28、变量,使变量的值为表达式的值将表达式的值求出来,赋给左边的变量,使变量的值为表达式的值 a=3;d=func();c=d+2;x=20/4;46n表达式的值的类型以变量的类型为主表达式的值的类型以变量的类型为主 int x;x=10+30/7+1.5double y;y=10+30/7+100n赋值表达式的值又可以作为另外一个赋值表达式赋值表达式的值又可以作为另外一个赋值表达式)10(ban赋值表达式也可以包含复合赋值运算符赋值表达式也可以包含复合赋值运算符 aaaa*472.7.3 关系表达式和逻辑表达式关系表达式和逻辑表达式o关系表达式关系表达式:用关系运算符将两个运算对:用关系运算符将两
29、个运算对象(算术表达式、赋值表达式、关系表达式象(算术表达式、赋值表达式、关系表达式和逻辑表达式等)连接起来构成的式子和逻辑表达式等)连接起来构成的式子 a+3b+4(ab)(c=2)(ch!=getchar()注:关系表达式的值是一个逻辑值,即注:关系表达式的值是一个逻辑值,即“真真”或或“假假”例例2.9:求下面关系表达式的值求下面关系表达式的值int a=0;double b=0.5,x=0.3;求a=x278int i=1,j=7,a;a=i+(j%4!=0);求a00248o逻辑表达式逻辑表达式:用逻辑运算符将运算对象连用逻辑运算符将运算对象连接起来的式子接起来的式子 n逻辑表达式的值只能是逻辑表达式的值只能是“真真”或或“假假”n表示逻辑运算结果:以数值表示逻辑运算结果:以数值1代表代表“真真”,以数,以数值值0代表代表“假假”n判断是否为判断是否为“真真”:以非:以非0表示表示“真真”,以,以0表表示示“假假”!5的值是0a=2&b=4 的值是1a=0|b=2 的值是149!a a&b a|b !a|b 4&0|2 53&2|8b)&(n=cd)/m=0,n=1
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。