C语言程序设计第二章.ppt

上传人:za****8 文档编号:11830706 上传时间:2020-05-03 格式:PPT 页数:62 大小:1.02MB
返回 下载 相关 举报
C语言程序设计第二章.ppt_第1页
第1页 / 共62页
C语言程序设计第二章.ppt_第2页
第2页 / 共62页
C语言程序设计第二章.ppt_第3页
第3页 / 共62页
点击查看更多>>
资源描述
重庆电力高等专科学校,2.1C语言的数据类型,2.3变量赋初值,2.4各类数值型数据间的混合运算,2.2常量与变量,2.5C语言的运算符和表达式,重庆电力高等专科学校,2.1C语言的数据类型,图2.1C语言的数据类型分类,重庆电力高等专科学校,2.1C语言的数据类型,表2.1C语言的数据类型及取值范围,重庆电力高等专科学校,2.2常量与变量,程序运行过程中,其值不能被改变的量称为常量,其值可以改变的量称为变量。,2.2.1常量,1整型常量(1)十进制整数:由数字19开头,其余各位由09组成。如123、-789、0等。(2)八进制整数:由数字0开头,其余各位由07组成。在书写时要加前缀“0”(零)。如012,表示八进制数12。(3)十六进制整数:由数字0 x或0X开头,其余各位由09与字母af(0X开头为)组成。在书写时要加前缀“0 x”或“0X”开头。如0 x36,代表十六进制数36。,重庆电力高等专科学校,2.2常量与变量,注意:(1)在C语言中10,010,0 xl0是3个数值完全不同的整数。(2)整型数可longint、shortint和unsignedint等若干种。(3)长整型数在书写时加一个后缀“L”。(4)整型数又可以是正数和负数。,例如:123,-123,0123,-0123,0 x789,-0 x789是合法的;16、020、0 xl0在计算机中的内部表示都相同。,重庆电力高等专科学校,2.2常量与变量,2实型常量实型常量又称实数、浮点数,有两种表现形式:(1)十进制实数:由数字和小数点组成。如0.149,123.0。(2)指数形式:用带指数记数法来表示,如123E2或123e2(注意书写)。,3字符型常量字符型常量有:字符常量、字符串常量和转义字符三种。,(1)字符常量字符常量构成:用一对单引号括起来的单个字符。例如:A、a、X、?、$等都是字符常量。字符常量的值:就是该字符的ASCII码值,可以和数值一样参加运算。例如:字符A的数值为十进制数65。,重庆电力高等专科学校,2.2常量与变量,3字符型常量,(2)字符串常量字符串常量构成:用一对双引号括起来的字符序列。例如:abc、CHINA、yes、1234、Howdoyoudo.等,都是字符串常量。字符串长度:字符中的字符个数。例如,Howdoyoudo.、Goodmorning.和的长度分别为14、13和0。C语言规定:字符串存储时,系统在末尾自动加一个0符号作为字符串的结束标志。,例如:字符串为“CHINA”内存中实际存储为:,重庆电力高等专科学校,2.2常量与变量,注意:字符常量与字符串常量的区别。例如:字符常量A与字符串常量A的区别是:定界符不同:字符常量使用单引号,而字符串常量使用双引号;长度不同:字符常量长度为1,字符串常量长度可为任意值(0或某个整数);存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。,3字符型常量,重庆电力高等专科学校,2.2常量与变量,3字符型常量,(3)转义字符,转义字符:C语言中用来表示键盘上的控制符和功能符的特殊符号。例如:回车换行符、换页符等。形式:反斜杠后面跟一个字符或一个数值。例如:n,为换行,101与x41都表示字符A。,重庆电力高等专科学校,2.2常量与变量,3字符型常量,重庆电力高等专科学校,2.2常量与变量,【例2.1】转义字符的使用#includevoidmain()printf(abctderftgn);/*表示一个空格*/printf(htibbjk);程序运行后在显示屏上的输出结果如下:fgdehjk若在打印机上输出,则结果如下:fabcgdehjik,重庆电力高等专科学校,2.2常量与变量,4.符号常量在C语言中用符号来代替常量称为符号常量。习惯上,符号常量名用大写,变量名用小写,以示区别。【例2.2】符号常量的使用。/*程序功能:计算圆的面积*/#include#definePI3.1415926voidmain()floatr,s;r=5.0;s=PI*r*r;printf(Areais%f,s);,运行结果为:Areais78.539815,重庆电力高等专科学校,2.2常量与变量,注意:使用符号常量的好处是:(1)含义清楚。定义符号常量名时应考虑“见名知意”。(2)在需要改变一个常量时能做到“一改全改”。(3)符号常量的值在其作用域内不能改变,也不能再被赋值。,重庆电力高等专科学校,2.2常量与变量,2.2.2变量,变量:在程序运行过程中其值可以改变的量。变量属性:变量名、变量类型(内存中占用存储单元)和变量的值。(1)变量名:变量的名字变量名。变量命名:遵循标识符命名规则,最好取名时考虑“见名知意”。例如:max表示求最大值、sum表示求和等。(2)变量类型:整型变量、实型变量和字符变量三种。不同类型的变量,占用的内存单元(字节)数不同。(3)变量值:变量在程序运行过程中的取值。在程序中,通过变量名来引用变量的值。,重庆电力高等专科学校,2.2常量与变量,重庆电力高等专科学校,2.2常量与变量,1整型变量(1)整型变量分类根据占用内存字节数的不同,整型变量分为4类:基本整型(int)、短整型(shortint)、长整型(longint)和无符号整型。无符号整型:无符号基本整型(unsignedint)、无符号短整型(unsignedshort表示)和无符号长整型(用unsignedlong表示)三种。,重庆电力高等专科学校,2.2常量与变量,(2)整型变量占用字节数与值域各种类型的整型变量占用的内存字节数,随系统而异。,注:对于其它系统中设基本整型占用内存字节数为n,其值域为:-2n*8-1(2n*8-1-1);无符号整型变量的值域为:0(2n*8-1)。,重庆电力高等专科学校,2.2常量与变量,例如,图2.2是在TurboC系统中:int与unsigned最大值。,重庆电力高等专科学校,2.2常量与变量,(3)整型变量的定义所有变量都必须“先定义,后使用”。例如:inta,b;/*定义变量a、b为整型*/unsignedshortc,d;/*定义变量c、d为无符号短整型*/longe,f;/*定义变量e、f为长整型*/注:变量定义一般是放在一个函数的开头的声明部分。,重庆电力高等专科学校,2.2常量与变量,【例2.3】整型变量的定义与使用。#includevoidmain()inta,b,c,d;/*定义a,b,c,d为整型变量*/unsignedu;/*定义u为无符号整型变量*/a=12;b=-24;u=10;c=a+u;d=b+u;printf(a+u=%d,b+u=%dn”,c,d);运行结果为:a+u=22,b+u=-14,重庆电力高等专科学校,2.2常量与变量,2实型变量C语言的实型变量,分为两种:(1)单精度型(float):占4个字节(32位)7位有效数字。(2)双精度型(double),占8个字节15位有效数字。例如:floatx,y;/*定义x、y为单精度实数*/doubleb;/*定义b为双精度实数*/longdoublec;/*定义c为长双精度实数*/,重庆电力高等专科学校,2.2常量与变量,3字符变量字符变量的类型关键字为char,占用一个字节内存单元。(1)变量值的存储字符变量在内存中占一个字节。以该字符的ASCII码值(无符号整数)存储到内存单元中。例如:charchl,ch2;/*定义两个字符变量:chl,ch2*/chl=a;ch2=b;/*给字符变量赋值*/,存储如图所示:,重庆电力高等专科学校,2.2常量与变量,(2)特性C语言中字符型数据与整型数据之间可以通用。,例如:字符型数据既可以以“字符形式”或者“整数形式”输出。【例2.4】字符变量的字符形式输出和整数形式输出。#includevoidmain()charch1,ch2;ch=a;ch2=b;printf(ch1=%c,ch2=%cn,ch1,ch2);/*字符形式输出*/printf(“ch1=%d,ch2=%dn”,ch1,ch2);/*整数形式输出*/,程序运行结果:ch1=a,ch2=bch1=97,ch2=98,注意:字符数据占一个字节,它只能存放0-255范围内的整数。,重庆电力高等专科学校,2.2常量与变量,允许对字符数据进行算术运算。【例2.5】字符数据的算术运算。#includevoidmain()charch1,ch2;chl=a;ch2=B;printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32);/*字母的大小写转换*/程序的运行结果:ch1=A,ch2=b,重庆电力高等专科学校,2.3变量赋初值,变量赋初值又称为变量初始化,有其两种方法:(1)先定义一个变量,然后再给它赋一个值,例如:inta;a=;(2)在定义变量的同时就对变量进行初始化,例如:charch=a;floatb=2.345;intx,y=3;/*部分变量赋初值,对y赋初值3*/,重庆电力高等专科学校,2.3变量赋初值,【例2.6】变量赋初值#includestdio.hvoidmain()intx,y=3;charch;ch=a;printf(%d%d%c,x,y,ch);运行结果如下:2513a,注:x没有进行初始化,输出为随机不定值251,下次可能是其他的结果。,重庆电力高等专科学校,2.4各类数值型数据间的混合运算,在同一个表达式中出现多种数据类型的混合运算时,先将各种类型数据转换成同一类型数据,然后才能运算求值。转换规则如图2.4所示。,重庆电力高等专科学校,2.4各类数值型数据间的混合运算,(1)规范化图2.4中水平方向的向左箭头的转换为规范化转换。(2)保值转换图2.4中向上方向的向上箭头的转换为保值转换(即将类型等级较低转换成等级较高的)。,例如:有如下定义:intm;floatn;doubled;longinte;对表达式:(c+d)*20+m*n-de,问:上述表达式最后的结果是什么类型?,重庆电力高等专科学校,求(c+d)*20+m*n-de的转换过程是:计算(c+d)时,先将c和d转换成整型数99、100,运算结果为199;计算m*n时,先将m和n都转换成为双精度型;将e转换成双精度型,de结果为双精度型;假设所用计算机是先计算运算符左边操作数,那么(c+d)*20计算后结果为3980,再将3980转换成双精度型,然后与m*n的结果相加,再减去de的结果,表达式计算完毕,结果为双精度。,2.4各类数值型数据间的混合运算,重庆电力高等专科学校,2.5C语言的运算符和表达式,C语言表达式是由运算符、常量及变量组成;运算符(即操作符)是对运算对象(又称操作数)进行某种操作的符号。有二元(双目)、一元(单目)运算符。对于运算符应从以下不几个方面掌握:1运算符号2运算规则,即所进行的操作3运算的优先级别4运算顺序5运算对象6运算结果,重庆电力高等专科学校,2.5C语言的运算符和表达式,1五种基本算术运算符+(加法)、-(减法取负)、*(乘法)、/(除法)、%(求余数)运算规则与代数运算基本相同,但有以下不同之处需要说明:(1)除法运算/两个整数相除商为整数,小数部分被舍弃。例如:52=2而:5.0/2=2.5。(2)求余数运算%参加运算的两操作数均为整型数据,否则出错。结果是整除后的余数。在TurboC中运算运算结果的符号与被除数相同。例如:7%3=1,7%-3=1,(商分别为2、-2)。-7%3=-1,-7%-3=-1;(商分别为-2、2)。,重庆电力高等专科学校,2.5C语言的运算符和表达式,2表达式和算术表达式(1)表达式的概念。表达式:用运算符和括号将常量、变量和函数等连接起来符合C语言语法规则的式子。单个常量、变量或函数构成的表达式称为简单表达式。(2)算术表达式的概念。算术表达式:用算术运算符和括号将常量、变量和函数等连接起来的符合C语言语法规则的式子。例如:3+6*9、(x+y)21、5-a等,都是算术表达式。,重庆电力高等专科学校,2.5C语言的运算符和表达式,(3)表达式求值运算顺序例如:先乘除后加减。结合性同级运算的结合方向称为结合性。例如:算术运算符的结合方向是“从左至右”,即先左后右,称左结合。,重庆电力高等专科学校,2.5C语言的运算符和表达式,3强制类型转换一般格式为:()()功能:将一个表达式强制转换成所需类型。例如:(double)a将变量a的值转换成double型(int)(x+y)将x+y的结果转换成int型(float)5/2等价于(float)5)/2,将5转换成实型,再除以2(=2.5)(float)(5/2)将5整除2的结果(2)转换成实型(2.0),注意:强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,x原定为float型,则(double)x只是将变量x的值转换成一个double型的中间量,其x的数据类型并未转换成double型,仍为float型。,重庆电力高等专科学校,2.5C语言的运算符和表达式,4自增(+)、自减(-)运算符自增(+)运算是使单个变量的值增1;自减(-)运算使单个变量的值减1。自增、自减运算符都有两种用法:(1)前置运算:运算符放在变量之前:+变量、-变量先使变量的值增(或减)1然后再以变化后的值参与其他运算,即先增(减)、后运算。(2)后置运算:运算符放在变量之后:变量+、变量-变量先参与其他运算,然后再使变量的值增(或减)1,即先运算、后增(减)。,重庆电力高等专科学校,2.5C语言的运算符和表达式,例如:如果i的原值等于3,则执行下面的赋值语句:j=+i;(i的值先增1变成4,再赋给j,j的值为4)j=i+;(先将i的值3赋给j,j的值为3,然后i增1变成4),【例2.7】自增、自减运算符的用法与运算规则示例#includevoidmain()intx=6,y;printf(x=%dn,x);/*先输出x的初值*/y=+x;/*前置运算:x先增1(=7),然后再赋值给y(=7)*/printf(y=+x:x=%d,y=%dn,x,y);y=x-;/*后置运算:先将x的值(=7)赋值给y(=7),然后x再减1(=6)*/printf(y=x-:x=%d,y=%dn,x,y);,程序运行结果:x=6y=+x:x=7,y=7y=x-:x=6,y=7,重庆电力高等专科学校,2.5C语言的运算符和表达式,说明:(1)自增、自减运算常用于循环语句中使循环控制变量加(或减)1。(2)自增、自减运算符不能用于常量和表达式。例如,5+、-(a+b)等都是非法的。(3)连续使用同一变量进行自增或自减时很易出错。例如:(x+)+(x+)+(x+)=?(假设x的初值=3)解:表达式的值等于9,变量x的值变为6。为什么?请思考。(4)书写时最好采用能理解的写法,避免误解。如:不要写成i+j形式,可产生(i+)+j或i+(+j)二义性,最好写成(i+)+j或i+(+j)的形式。但C语言规定:从左到右取尽可能多的符号组成运算符。i+j应理解为(i+)+j。(5)在printf()函数中从右向左计算。例如:设i的初值为5:Printf(“%d,%d”,i,i+);输出结果为:6,5,重庆电力高等专科学校,2.5C语言的运算符和表达式,2.5.2关系运算符和关系表达式,关系运算就是将两个数据进行“比较运算”,判定两个数据是否符合给定的关系,如果条件成立结果为“真”;否则条件不成立结果为“假”。,1关系运算符及其优先次序(1)关系运算符(大于),=(大于或等于),=(等于),!=(不等于),注意:“等于”关系运算符是双等号“=”,而不是单等号“=”(赋值运算符)。,重庆电力高等专科学校,2.5C语言的运算符和表达式,(2)关系运算符优先级前4个优先级相同,后2个相同,且前4个高于后2个。即:(、=)(=、!=)(3)与其他运算的优先级关系运算符的优先级低于算术运算符,但高于赋值运算符。即:算术运算符(,=)(=,!=)赋值运算符,2关系表达式关系表达式:用一个关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式或字符表达式等)连接起来,进行关系运算的式子。,重庆电力高等专科学校,2.5C语言的运算符和表达式,例如:ab,a+bc-d,(a=3)=b,(ab)=(bc)都是合法的关系表达式。,关系表达式的值是一个逻辑值(非“真”即“假”)。C语言中用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。例如,假设intx=3,y=4,z=5,则:(1)xy的值为0。(2)(xy)!=z的值为1。(3)xy=0”且“xl0”,就不能能写为“0)仅次于算术双目运算符,运算方向从左向右运算。(1)左移运算符左移运算符把一个数的二进位全部左移若干位。例如:b2将b的各二进位右移2位。移到右端的低位被舍弃,对无符号数,高位补0。如b=14时:b为00001110,b2为00000011:10,此二位舍弃,重庆电力高等专科学校,2.5C语言的运算符和表达式,右移一位相当于除以2,右移n位相当于除以2n。右移时,应注意符号位问题。补入0的称为“逻辑右移”。补入1的称“算术右移”。例如:m为八进制数113755。m:1001011111101101m1:0100101111110110(逻辑右移时)m1:1100101111110110(算术右移时),重庆电力高等专科学校,2.5C语言的运算符和表达式,位运算赋值运算符,位运算赋值运算符优先级:6个运算符同级,与赋值符级别相同,运算方向自右向左运算。例如:设a=6,b=3,a,b均为无符号整型,则:b&=a,结果a不变,b为2a=b,结果b不变,a为48,重庆电力高等专科学校,2.5C语言的运算符和表达式,2.5.10运算符的优先级与结合性,结合性就是指操作数两侧的运算符相同优先级时,该操作数是先与左边,还是先与右边的运算符结合。若先与左面的运算符结合,称为左结合性(即从左至右运算)。反之,称为右结合性(从右至左运算)。,总结得出:结合性:除单目运算符、条件运算符和赋值运算符是右结合性外,其他运算符都是左结合。优先级顺序:表中第1级最高,第15级“,”号运算符最低。运算符的优先级与结合性见表2.6所示。,重庆电力高等专科学校,表2.6运算符的优先级与结合性,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!