《C程序设计-第二章.pptx》由会员分享,可在线阅读,更多相关《C程序设计-第二章.pptx(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章 数据类型、运算符与表达式C语言的数据类型常量与变量变量赋初值运算符和表达式目的、要求:掌握C的数据类型、运算符尤其是赋值运算符;掌握标识符的命名规则。第1页/共40页3.1 C语言的数据类型C数据类型数据类型数组类型结构体类型共用体类型枚举类型整型整型 字符型字符型 实型实型(浮点型浮点型)单精度型单精度型 双精度型双精度型 基本类型基本类型指针类型构造类型本章讨论本章讨论基本类型数据基本类型数据第2页/共40页3.2 常量与变量常量:其值不随程序的运行而改变的量变量:其值可随程序的运行而改变的量第3页/共40页3.2.1 常量常量字面常量(或直接常量):如3,4,a,b符号常量:以标
2、识符代表常量的符号,一般用大写 不管是字面常量还是符号常量,只要是常量,其值都不能被改变!第4页/共40页main()PI=3.15;main()float r=3,s,v;s=4*PI*r*r;v=4/3*PI*r*r*r;第5页/共40页3.2.2 变量main()main()int a,b;/*int a,b;/*定义变量定义变量a,ba,b为整型为整型*/*/a=123;b=456;/*a=123;b=456;/*赋初值赋初值*/*/变量代表内存中的一个存储单元,用来存放数据。ab123456第6页/共40页注意:变量名和变量值的区别对应内存地址 内存地址中存放的内容 变量名又称为标识
3、符,只能由字母、数字和下划线3种字符组成,且第一个字符必须是字母或下划线。123,def,sum,_y,y&u第7页/共40页12.以下正确的C语言标识符是_。(2005-1)A)%x B)a+b C)a123 D)test!是合法的用户自定义标识符。(2005-12)A)ah-spks B)double C)D)_myapple课堂练习11.以下合法的用户标识符是_。(2006-1)A)1st B)break C)Two Words D)B757第8页/共40页(1)C语言中,大、小写字母被认为是两个不同的字符,变量名一般用小写。(2)C语言中,标识符的长度无统一规定,随系统而不同。在写程序
4、时尽量不要超过8个字符。(3)标识符的选取原则:“见名知意”,这也是结构化程序的特征之一。(4)C语言中,变量必须“先定义后引用”,以便在编译时发现错误。注意事项第9页/共40页3.3 整形数据无符号整型:unsigned int 无符号短整型:unsigned short无符号长整型:unsigned long基本型:int表示,-32768+32767短整型:short int或short表示,同int。长整型:long int或long表示,-2147483648 +2147483647无符号型10进制8进制:0开头的数字序列16进制:0 x开头的数字序列整型常量整型变量整型数据第10页
5、/共40页整型变量的定义 变量的定义一般放在一个函数的开头部分。main()int a,b,c,d;unsigned u;a=12;b=-24;u=10;c=a+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d);第11页/共40页 整型数后加l或L表示长整型,其存储空间扩大为4个字节。整数后面加u,按无符号数方式存储,如-12345u,则先将其转换成补码53191,然后按无符号数存储。main()int a,b;a=32767;b=a+1;printf(%d,%dn,a,b);第12页/共40页3.4 浮点型(实型)数据十进制形式:由数字和小数点组成指数形式:123e3或1
6、23E3代表123*103E/e前必须有数字E/e后必须为整数单精度(float型):一般占4个字节(32位),67位有效数字双精度(double型):一般占8个字节,15或16位有效数字实型常量实型变量实型数据长双精度(long double型):一般占16个字节,18或19位有 效数字第13页/共40页 计算时,C编译系统自动将实型常量按双精度处理,然后根据变量类型截取相应的有效位数。这样可提高计算精度,但会降低运算速度。若要按float型运算,在数字后加f或F即可,如。实型数据的舍入误差:因有效数字位数有限而产生的。main()float a,b;a=123456.789e5;b=a+2
7、0;printf(“a=%fnb=%fn”,a,b);运行结果:第14页/共40页3.5 字符型数据字符常量单引号括起来的单个字符,如a,x等转义字符P48页表3-3字符变量(char)只能存放一个字符,在内存中占一个字节字符在内存中以ASCII代码形式存放字符变量和整型变量可以通用第15页/共40页3.5.4 字符串常量用双引号括起的一个字符序列例如:ABC、123、a、nt “Good morning”等字符串常量的长度:所包含的字符个数 字符串常量的存储方式:nn GG o o o o d dmm o o r rn ni i n n g g 00a a00所占存储单元数:串长度1例如:字
8、符串结束标记第16页/共40页19.设有说明语句:char a=123;则变量a_。(2005-12)A)包含一个字符 B)包含两个字符 C)包含三个字符 D)说明不合法13.以下属于合法的长整型常量的是_。(2006-1)A)5876 B)0L C)2E10 D)”5876”课堂练习第17页/共40页3.6 变量赋初值main()main()int a,b;/*int a,b;/*定义变量定义变量a,ba,b为整型为整型*/*/a=123;b=456;/*a=123;b=456;/*赋初值赋初值*/*/C语言中,变量赋值由赋值运算符=来完成,方法为:变量=表达式 赋值运算符的结合方向:自右至
9、左 a=b=c=5+3;a+b=5第18页/共40页3.6 变量赋初值(续)C语言允许在定义变量的同时对变量初始化。如:int a=3;int a;a=3;等价int a,b,c=3;int a,b,c;c=3;等价第19页/共40页3.6 变量赋初值(续)注意:对几个变量赋同一个初值的方法为:int a=b=c=5;int a=5,b=5,c=5;main()int a=b=c=5;printf(“a=%d,b=%d,c=%c”,a,b,c);main()int a,b,c;a=b=c=5;printf(“a=%d,b=%d,c=%c”,a,b,c);第20页/共40页3.7 各类数值型数据
10、间的混合运算整型、浮点型和字符型数据可以混合运算。12+a+1.7*b混合运算时需要进行类型转换,这些转换是由系统自动进行的。类型转换规则如下:doublefloatlongunsignedintChar,short低高第21页/共40页3.8.1 C语言运算符类型类型类型类型种类种类种类种类算术运算符算术运算符算术运算符算术运算符+-*/%+-*/%赋值运算符赋值运算符赋值运算符赋值运算符=及其扩展赋值运算符及其扩展赋值运算符及其扩展赋值运算符及其扩展赋值运算符关系运算符关系运算符关系运算符关系运算符 =!=逻辑运算符逻辑运算符逻辑运算符逻辑运算符!&|!&|位运算符位运算符位运算符位运算符
11、|&|&条件运算符条件运算符条件运算符条件运算符?:?:逗号运算符逗号运算符逗号运算符逗号运算符,其他运算符其他运算符其他运算符其他运算符*、&sizeof .-&sizeof .-等等等等第22页/共40页3.8 算术运算符和算术表达式1.基本的算术运算符:加法运算符,或正值运算符,如4+7,+1减法运算符,或负值运算符,如5-2,-4*乘法运算符,如3*4/除法运算符,如5/4%模运算符,或称求余运算符,%两侧均应为整型数据,如7/4第23页/共40页说明l l没有乘方运算符没有乘方运算符,要计算,要计算a a3 3要写作要写作 a*a*a a*a*a 的连乘,的连乘,或用标准库函数或用标
12、准库函数 pow(a,3)pow(a,3)l l“/”的运算对象可为各种类型数据,但是当进行两的运算对象可为各种类型数据,但是当进行两个整型数据相除时,运算结果也是整型数据个整型数据相除时,运算结果也是整型数据 l l“%”要求运算对象必须是整型数据,功能是求要求运算对象必须是整型数据,功能是求两数相除的余数,余数的符号与被除数的符号相两数相除的余数,余数的符号与被除数的符号相同。同。9/4=29%4=1-9%4=-1第24页/共40页2.算术表达式和运算符的优先级与结合性由运算符将运算对象连接成的式子,称为算术表达式。运算符的优先级可以参考附录C。优先级相同的运算符,符合“左结合性”。a+b
13、-c a=123;()+-+-*/%+-同级 同级 同级 单目单目 双目双目 高高 低低第25页/共40页3.强制类型转换运算符一般形式:(类型名)(表达式)或(类型名)单个变量或常量(int)a(float)(a+b)(float)a+b说明:在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。main()float x;int i;i=(int)x;Printf(“x=%f,i=%dn”,x,i);第26页/共40页4.自增、自减运算符+-是单目运算符有前缀和后缀两种形式 前缀形式:先自增(自减)再引用;后缀形式:先引用再自增(自减);功能:前缀形式 +a 等价于 a=
14、a+1 -a 等价于 a=a 1 后缀形式 a+等价于 a=a+1 a-等价于 a=a 1使变量的值增1 1或减1 1第27页/共40页4.自增、自减运算符(举例)当 a5 时 +a 表达式的值为 6,且 a6 a+表达式的值为5,且 a6 b=+a 等价于 a=a+1;b=a 表达式的值为6,且 a=6,b=6 b=a+等价于 b=a;a=a+1 表达式的值为5,且 a=6,b=5 第28页/共40页4.自增、自减运算符(说明)+和-的运算对象只能是变量(或运算结果是变量的表达式),不能是常量(或运算结果是数值的表达式)。例如:5+、(a+2)+不合法。具有右结合性,结合方向为从右到左。例如
15、:a+等价于 -(a+)如果有多个运算符连续出现时,C系统尽可能多的从左到右将字符组合成一个运算符例如:i+j 等价于 (i+)+j -i+-j 等价于-(i+)+(-j)第29页/共40页3.9 赋值运算符和赋值表达式“=”为赋值运算符,如a3;赋值表达式的一般形式为:将表达式的值存入变量对应的内存单元中 m=12 b=a-2 x=(x=5)a3第30页/共40页3.9 赋值运算符和赋值表达式(说明)赋值号左边必须是变量,右边可以是C语言任意合法的表达式例如:n=t+210 等价于:a=(b=(b*c)10)赋值号与数学中的等号含义不同例如:数学中 a=b 等价于 b=a C语言中 a=b
16、不等价于 b=a第31页/共40页3.9 赋值运算符和赋值表达式(续)复合运算符:在赋值运算符前加上其它的运算符构成。复合运算符的目的:简化程序和提高编译效率。复合赋值运算符复合赋值运算符(右结合)右结合)+=-=*=/=%=+=-=*=/=%=&=|=&=|=a+=3a=a+3等价x%=y+3x=x%(y+3)等价第32页/共40页3.10 逗号运算符和逗号表达式逗号运算符:,逗号表达式:用逗号运算符连接的表达式。一般形式:表达式1,表达式2,表达式n 逗号表达式的值为表达式n的值。逗号表达式的优先级是最低的。如:int a=3;a=3*5,a*4 a=?第33页/共40页 x=(a=3,6
17、*a)赋值表达式,x=18 x=a=3,6*a 逗号表达式,?并不是任何地方出现的逗号都是作为逗号运算符,如:printf(“%d,%d,%d”,a,b,c);“a,b,c”为函数的3个参数,逗号为参数间的分隔符。printf(“%d,%d,%d”,(a,b,c),b,c);“(a,b,c)”为逗号表达式,其值等于c的值。第34页/共40页课堂练习13.设整型变量a的值为2,下列表达式值为1的是_。(2004-1)A)a%3 B)a/3 C)-a D)a+14.设变量a、b、c已定义并赋值,则下列表达式中符合C语言语法规则的是_。(2004-1)A)a=5+B)a=b=c+C)a=%2 D)b
18、=a+1=216.下列式中,最终运算结果的数据类型不是单精度的表达式是_。A)(int)(3+3.0)B)1e-3 C)(float)(3)D)17.字符串”abx4134cd102y”的长度是_。(2004-1)A)10 B)12 C)14 D)18第35页/共40页课堂练习(续)18.设整型变量x,y,z均为2,表达式(x+)+(y+)+(z+)的值是_。(2004-1)A)6 B)7 C)8 D)91.设int a=3,b=5;float x=7.5,y=3.5;则表达式(float)a+b/2+(int)x%(int)y;的值是_。(2004-1)23.执行语句:int a;a=1+1
19、.5;后,正确的叙述是_。(2005-12)A)a的值是字符3 B)a的值是浮点型C)不允许字符型和浮点型相加D)a的值是字符1的ASCII码值加上1第36页/共40页课堂练习(续)24.设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是_。(2005-12)A)均为2个字节 B)065535C)-3276832767 D)-256至25525.执行下列语句后,运行结果为_。(2005-12)main()int i=3,j;j=+i+i+;printf(“%dn”,j);A)6 B)7 C)8 D)9第37页/共40页课堂练习(续)26.若a为int类型,且其值为5,则执行表达式a+=a-=a*a后,a的值为_。(2005-12)A)-5 B)-40 C)-15 D)不确定3.如果x,y,i和j都是int型变量,则表达式x=(i=1,j=6,y=8)的值为_。(2006-1)第38页/共40页作业待定!第39页/共40页感谢您的观看!第40页/共40页