欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机所处理的数据以一定形式存放在内存中,数据的存储方.ppt

    • 资源ID:526310       资源大小:906KB        全文页数:88页
    • 资源格式: PPT        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机所处理的数据以一定形式存放在内存中,数据的存储方.ppt

    计算机所处理的数据以一定形式存放在内存中,数据的存储方式以及能够进行的合法运算都与数据类型直接相关。C+的特点之一就是提供了丰富的数据类型,以便处理各种不同的数据。数据类型总是与运算封装在一起,本质上是面向对象的。本章将简要介绍C+中的数据类型及相关运算,以及常量、变量、表达式、语句等,最后介绍简单的输入输出方法。,第二章 C+基础知识,第二章 C+基础知识,21 C+的词法单位,25 运算符、表达式和语句,26 简单的输入输出,24 数组与字符数组,23 常量和变量,22 C+ 中的数据类型,ok,2.1 C+的词法单位,211 C+的字符集,212 关键字,213 标识符(ID,identifier),214 标点符号,ok,2.1.1 C+的字符集,ASCII码字符集是计算机中的常用字符集。它包括英文字母及阿拉伯数字等128个字符,存储一个ASCII码占用一个字节单元。,由于汉字处理的需要,又出现了汉字国标码等对应于不同语言的字符集。国标码的存储占用两个字节单元。,Unicode字符集对各类字符进行统一的双字节编码。它包括了世界上多种语言的基本字符,最多可容纳65536个字符。 ASCII码字符集,国标码字符集都是它的子集。,ok,C+的字符集,C+语言使用下列基本字符来构成词法单位:,2.1.1结束,2.1.2 关 键 字,关键字(keyword)又称保留字。是由系统定义的具有特定含义的英文单词。关键字不能另作它用。,C+区分大小写,关键字全部由小写字母组成。标准C+(ISO14882)定义了74个关键字,具体的C+编译器还会做一些增删。常用关键字及分类见表2.1。,ok,关 键 字,表2-1 C+常用关键字及分类,ok,关 键 字,2.1.2结束,2.1.3 标识符,标识符(Identifier,ID )是程序员定义的“单词”,用来给变量、常量、数据类型、函数等命名。,合法标识符由字母或下划线开始,由字母、数字、下划线组成,其有效长度为131个字符,长度超过31个字符者只识别前31个字符,VC+标识符长度为1247个字符。,建议使用有一定含义的英文单词或拼音序列作标识符,以提高可读性;另外尽量不用下划线或双下划线打头,以免与系统定义的关键字冲突。,ok,标识符,例: 判断下面哪些是合法的标识符:,MyFile,Salary 94,amount,void,94Salary,Salary94,$amount,f3.5,Num_of_Student,2.1.3结束,2.1.4 标点符号,标点符号包括:#、( )、 ,、 :、 ;、 "、 '等。,标点符号的作用:,有一定的语法意义。如字符和字符串常量分别用 和 “ ”引起来。,对语法符号起分隔作用。如 ;等,2.1.4结束,2.2 C+中的数据类型,ok,C+对基本数据类型也分别进行了封装,称为内置数据类型,内置数据类型不仅定义了数据类型,还定义了常用操作。本节仅介绍各种基本数据类型的定义,常用操作将在后面介绍。,C+为强类型语言,所有数据的使用严格遵从“先说明后使用”的原则,以便编译器进行编译。,整型用来存放整数,整数(有符号的整数)在内存中存放的是它的补码,无符号数没有符号位,存放的就是原码。整数占用的字节数与机型有关,32位机上占用4个字节。,字符型用来保存字符,存储的是该字符的ASCII码,占用一个字节。如大写字母A的ASCII码为65,在对应的一个字节中存放的就是65。字符型数据从本质上说也是整数,可以是任何一个8位二进制整数。 由于汉语系字符很多,用ASCII字符集处理远远不够,因此又创立了双字节字符集(DBCS:double-byte character set),每个字符用两个字节来编码。为便于软件的国际化,国际上一些知名公司联合制定了新的宽字节字符标准Unicode。该标准中所有字符都是双字节的,不同的语言和字符集分别占用其中一段代码。这种用统一编码处理西文、中文及其它语言符号,就是unicode码。C+同时也支持宽字符类型(wchar_t),或称双字节字符型。,实型和双精度型都用来存放实数,两者表示的实数精度不同。实数在内存中以规范化的浮点数存放,包括尾数、数符和阶码。数的精度取决于尾数的位数,32位机上实型为23位(因规范化数的数码最高位恒为1,不必存储,实际为24位),双精度为52位。,逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC+6.0中为1个字节。布尔型在运算中可以和整型相互转化,false对应为0,true对应为1或非0,无值型主要用来说明函数的返回值类型,将在函数一章中具体介绍。,基本数据类型还可以加上一些修饰词,包括:signed(有符号)、unsigned(无符号)、long(长)、short(短)。参见下表:,2. 2结束,VC+中所有基本数据类型,2.3 常量和变量,2.3.1 变 量,2.3.2 字面常量,2.3.3 常变量及常量说明符const,在程序中,常量和变量是用来表示数据的;常量又分为字面常量、常变量;,ok,2.3.1 变 量,1 变量说明,2 变量赋初值,变量,在程序中是指可以改变值的量;变量必须用标识符进行标识,称为变量名;变量有类型之分,如整形变量、字符变量等;任何变量都必须先说明后使用;一是便于编译程序为变量分配空间,二是便于编译时进行语法检查;变量使用的第一步,是给变量赋初始值;,ok,变量说明,在C+中,变量说明的一般格式为:存储类型数据类型 变量名1,变量名2, ,变量名n;,下面是变量说明的几个例子:int i, j, k; /说明三个整型变量i, j, kfloat x, y, z; /说明三个实型变量x, y, zchar c1, c2; /说明两个字符型变量c1, c2double dx; /说明一个双精度型变量dx,变量说明 结束,变量赋初值,(1)变量说明时直接赋初值。例如:int a=3, b=4, c=5;float x=3.0;(2)用赋值语句赋初值。严格的说,只有前者可称赋初值例如:float x, e;x=3.5; e=2.71828;,2.3.1结束,给变量赋初值称为初始化,有两种方法:,2.3.2 字面常量,1. 整型常量,4. 字符串常量,3. 字符型常量,2. 实型常量,字面常量,指程序中直接给出的量;常量的值在程序执行过程中保持不变;并且存储在程序区,而非数据区;根据取值和表示方法的不同,可分为以下几种:,ok,整型常量,十进制表示法,八进制表示法,十六进制表示法,其他表示法,即整数,可以有多种表示方法:,ok,整数的十进制表示方法,十进制表示与我们熟悉的书写方式相同。如15 -24,ok,整数的八进制表示,八进制表示以0开始,由数字07组成,用来表示一个八进制数。如:012 /八进制数12,即十进制数10-0655/八进制数-655,即十进制数-429,ok,整数的十六进制表示,十六进制以0X(大小写均可)开始,由数字09和字母AF(大小写均可)组成,用来表示一个十六进制数。以下是一些常整数的例子:0x32A /十六进制数32A,即十进制数810-0x2fe0 /十六进制数-2fe0, /即十进制数-12256,ok,整数的其他表示方法,整型常量还可以表示长整数和无符号整数。长整型常数以 L 或 l 结尾,无符号常整数以 U 或 u 结尾,以 U L 或 L U(大小写均可)结尾则可表示无符号长整型常数。例如:-84L/十进制长整数-84026U/八进制表示的无符号整数260X32LU /十六进制表示的无符号长整型数32。,整数 结束,实型常量,(1)一般形式与平时书写形式相同,由数字 0 9和小数点组成。例如:0.23 -125.76 0.0 .46 -35.,(2) 指数形式(也称为科学表示法)表示为尾数乘以10的次方形式,由尾数、E或e和阶数组成。指数形式要求在E或e前面的尾数部分必须有数字,后面的指数部分必须为整数。,例 : 判断下列表示是否合法,123E12,-.34e-2,E4,1.43E3.5,包含小数点和10的幂的数为实型常量,有两种表示方法:,实数 结束,字符型常量,字符常量是用单引号引起来的单个字符。在内存中保存的是字符的ASCII码值。在所有字符中,有些是可显示字符,通常就用单引号引起来表示:a /字符a /字符4/字符4 /空格字符有些是特殊情况字符,如不可显示的字符等,c+使用转义序列表示方法,如(祥见表2-3,此处略):n /换行 / 字符,字符常 结束,4. 字符串常量,字符串常量与字符型常量的区别,字符串常量a占两个字节,存放a和 0,值为0x6100,字符型常量a占一个字节,存放a,值为0x61,2.3.2结束,用双引号引起来的若干个字符称为字符串常量。例如:I am a Chinese.,123, a , ,2.3.3 常变量及常量说明符const,用常量说明符const给字面常量起个名字(标识符),这个标识符就称为标识符常量;因为标识符常量的说明和引用形式很像变量,所以也称常变量;例如:const float PI=3.14159;const int Number_of_Student=100;常变量必须也只能在说明时进行初始化;常变量初始化之后,不允许再被赋值;常变量必须先说明后使用;常变量存储在数据区,并且可以按地址访问,编译时系统对常变量进行类型检查。C+建议使用常变量,而不要使用文字常量。,2.3.3 结束,2.4 数组与字符数组,2.4.1 数 组,2.4.2 字 符 数 组,本节介绍一种用户自定义的导出数据类型 数组类型,ok,2.4.1 数组,数组是有限个同类型元素的有序集合,这些元素有一个共同的名字,每个元素以其在数组中的位置区分,位置用下标表示。 例如数列或向量就可以看作一个数组,其中的元素用一个下标即可确定。 矩阵也可看作一个数组,其中的元素需要用“行”、“列”两个下标确定。 数组下标的个数称作维数,上述代表数列的数组和代表矩阵的数组分别称为一维数组和二维数组。本节只介绍一维数组。,ok,一维数组,定义一个一维数组的一般格式为: 存储类型 数据类型 数组名常量; 数据类型指的是数组中元素的数据类型,可以是C+中定义的任何一种数据类型。 写在中括号中的常量用来定义数组大小,即数组中元素的个数。例如:int m5; /定义数组m, 其中有5个整数 const int N=3; float xN;/数组x中有3个实数,ok,一维数组,数组在存储单元中是按下标的顺序连续存放的,任何一个元素都可以单独访问,其标识方法是用数组名和下标: 数组名表达式 表达式用来计算下标值。C+中规定数组第一个元素的下标为0。,ok,一维数组,C+中数组大小在编译时确定,编译系统按照定义为数组分配一段连续的存储单元,这段单元的大小也是不能改变的,因此数组大小不能用变量定义,而只能是一个正整数常量。 下列定义是非法的:int count;float scount;/数组个数不能是变量,且必/须在定义时指明;const float Num=3;int nNum;/数组个数不能是实数;对数组的访问指的是对数组元素的访问,不能直接将数组名作为访问对象,对数组赋值也必须对每一个元素逐个赋值。参见下例:,ok,一维数组,1,1,2,3,1,输出,2.4.1结束,1,2,3,1+2=3,【例21】使用数组的简单例子。# include void main() int int_arr4;int_arr0=1; int_arr1=1; int_arr2=2;int_arr3=int_arr1+int_arr2;cout<<int_arr0<<n <<int_arr1<<n <<int_arr2<<n <<int_arr3<< n; ,2.4.2 字符数组,如果数组中的元素为字符,就称为字符数组。例如:char string110; /可用来保存10个字符的字符数组;char city_name1 = N,a,n,j,i,n,g; /可用来保存7个字符的字符数组;C+中字符数组用来保存字符串。允许直接用字符串常量给字符数组初始化。例如:char city_name2=”Nanjing”;用字符串初始化,字符数组会自动加上一个串结束符0 。串结束符在字符串操作中具有十分重要的意义,因此在定义字符数组大小时,要注意留出足够的空间保存串结束符。,ok,字符数组,为了处理字符串,C+中提供了若干字符串处理函数,这些函数定义在文件string.h中,其中包括: strlen(s),返回字符串s的实际长度(不包括0);strcpy(s1,s2),将字符串s2中0之前的所有字符依次赋值到字符串s1中,最后再加上一个0。由于不能直接对字符数组名赋值,所以将一个字符串的值赋给另一个字符串必须用字符串拷贝函数完成。例如:char string220;string2=”VC+”;/非法strcpy(string2, “VC+”);/合法,字符数组,【例22】 字符数组和字符串处理函数的应用。# include # include void main( ) char s1 =”Hello C+”;/初始化决定数组s1有10个元素char s210, s320;s20= B; s21= e; s22=g; s23= i;s24= n; s25= 0; /对字符串结束处理非常重要strcpy(s3, s2);cout<<”The length of”<<s1<<”is:”<<strlen(s1)<<n;/只有字符数组可整体输出,因为有结束符cout<<s2<<t<<s3<<n;运行结果:The length of “Hello C+” is 9Begin Begin,2.4.2结束,2.5 运算符、表达式和语句,251运算符、优先级和结合性,252 表达式,253 算术类型转换和赋值类型转换,254 强制类型转换运算符,255 求值次序与副作用,256 语句,本节的重点是介绍与基本数据类型封装在一起的运算(操作);体会面向对象的普遍性。,ok,2.5.1 运算符、优先级和结合性,ok,在C+中对常量或变量进行运算或处理的符号称为运算符,参与运算的对象称为操作数。运算符总是与操作数封装在一起。相同的运算符对不同类型的操作数执行的运算是有差异的,即运算符要重载。,优先级和结合性决定了运算中的优先关系。 运算符的优先级指不同运算符在运算中的优先关系,可以用序号表示,序号越小,优先级越高。比如: 加号()和减号()的优先级是6;乘号( * )和除号( / )的优先级是5;* 和 / 的优先级高于和。,2.5.1 运算符、优先级和结合性,运算符的结合性决定同优先级的运算符对操作数的运算次序。若一个运算符对其操作数按从左到右的顺序运算,称该运算符为右结合,反之称为左结合。例如计算10+20,对运算符“+”,是先取10,再取20,然后作加法运算,即按从左到右的顺序执行运算,所以 运算符“+” 是右结合的。再如a+=35,对运算符“+=”,是先取35,再取变量a,作加法运算后将结果赋值给变量a,即按从右向左的顺序运算,所以运算符“+=”是左结合的。,按照要求的操作数的个数,运算符分为单目(一元)运算符、双目(二元)运算符和三目(三元)运算符。单目运算符只对一个操作数运算,如负号运算符“”等;双目运算符要求有两个操作数,如乘号运算符“*”等;三目运算符要求有三个操作数,三元运算符只有一个“?:”。,2.5.1 运算符、优先级和结合性,(1) a*b+c; /先做乘法运算,再做加法(2) a+b-c ;/根据右结合性,先取a、b相加;再取c,最后相减,演示如下:设a=10,b=20,c=15;,10,20,15,15,1 算术运算符,2 关系运算符和逻辑运算符,3 位运算符,4 赋值运算符,5 自增、自减运算,6 sizeof( )运算符,2.5.1 运算符、优先级和结合性,1.算术运算符,ok,运算符重载:当两个操作数均为整数时,*和/重载为整乘和整除,结果为整数,除法运算后舍去小数取整。如:5/4/结果为1,整数,当两个操作数均为整数,%定义为求余运算,也称求模运算,结果为两个整数相除后的余数。如果两个整数中有负数,则先用两数绝对值求余,最后结果的符号与被除数相同。例如6%3/结果为06%7/结果为67%6/结果为1-7%6/结果为-17%-6/结果为1-7%-6/结果为-1,C+中算术运算应注意数据溢出问题,即运算结果超出对应数据类型的表示范围。编译程序只会对除法运算时除数为0这种情况提示出错,而特别容易溢出的整数的加、减和乘法运算产生溢出的情况,系统不作为错误处理,程序将继续执行并产生错误的计算结果。因此,程序设计者必须在程序中解决检查并处理整数溢出问题。,只要有一个操作数是实数,两个操作数均转换为double型,*和/重载为普通的乘和除,结果是实数:5/4.0/结果为1.25,实数,2.关系运算符和逻辑运算符,ok,关系运算符都是二元运算符,包括:(大于)、(不小于)、(小于)、(不小于)、= =(等于)和!=(不等于)。关系运算符完成两个操作数大小的比较,结果为逻辑值true(真)或false(假)。每种可比较大小的数据类型,都重载了关系运算符。不同类型,自动转换为同一类型后,采用对应关系运算符进行比较。,在C+中这两个逻辑值与整数之间有一个对应关系,真对应1,假对应0;反过来,0对应假,非0整数对应真。所以关系运算结果可以作为整数参与算术运算、关系运算、逻辑运算及其他运算。,2.关系运算符和逻辑运算符,设有定义 float a=3.2;int b=5;则: 3>a>b/结果是?,根据右结合原则其运算过程如下:,a,5,b,3.2,3,>,F, 即0,>,F即0,逻辑运算符,逻辑运算符用来进行逻辑运算。其操作数和运算结果均为逻辑量。运算结果同样可以作为一个整数参与其他运算。,由于逻辑值和整数之间的对应关系,也允许整型和字符型操作数进行逻辑运算:21&&0/逻辑与,21与0,结果为假:021|0/逻辑或,21或0,结果为真:1!21/逻辑非,21的非,结果为假:0,逻辑运算符,位运算符,(1)按位取反运算符“” (2)左移运算符“>” (4)按位与运算符“&” (5)按位或运算符“|” (6)按位异或运算符“”,ok,c+语言提供字位运算,它对操作数的各个位进行操作。,(1)按位取反运算符“”将操作数的每个二进制位取反,即1变为0,0变为1。例如,整数a的值为10011011,则a的值为01100100。,(2)左移运算符“<<”运算一般格式为:a<<n其中a为整数,n为一个正整数常数。语义为将a的二进制数依次向左移动n个二进制位,并在低位补0。左移n位相当于乘以2的n次方,但移位运算的速度比乘法快。,(3)右移运算符“>>”与左移运算符类同,将左操作数向右移动右操作数指定的二进制位数,忽略移位后的小数部分,并在高位补0。一个整数右移n位相当于除以2的n次方,但比除法快。 在VC+6.0中有符号数右移时高位补符号位,严格对应除法。,以上三种单目运算不影响数据本身的值,而是只产生一个中间量,这个中间量被引用后即不再存在。,(4)按位与运算符“&”将两个操作数的对应位逐一进行按位逻辑与运算。运算规则为:对应位均为1时,该位运算结果为1;否则为0。例如:a 01001101b 00001111a & b 00001101该运算可用来将整数的某些位置0,而保留所需要的位,上例保留了低四位。,(5)按位或运算符“|”将两个操作数的对应位逐一进行按位逻辑或运算。运算规则为:只要有一个数对应位为1,该位运算结果即为1;两个数对应位均为0,该位结果为0。例如:a 01001101b 00001111a | b 01001111该运算符可用来将整数的某些位置1。上例高四位不变,低四位全1。,(6)按位异或运算符“”将两个操作数的对应位逐一进行按位异或运算。运算规则为:当对应位的值不同时,该位运算结果为1,否则为0。例如:a 01001101b 00001111a b 01000010该运算符可用来将一个整数的某些位取反,或将整型变量的值置0(将整型变量与自身按位异或)。上例低四位取反,高四位不变。需要说明的一点是,以上例子中的整数都只取了低8位一个字节。,4.赋值运算符,ok,将数据存放到相应存储单元中称为赋值,如果该单元中已有值,赋值操作以新值取代旧值;从某个存储单元中取出数据使用,称为引用,引用不影响单元中的值,即一个量可以多次引用。常量只能引用,不能赋值。,赋值通过赋值运算符“=”来完成,其意义是将赋值号右边的值送到左边变量所对应的单元中。赋值号不是等号,它具有方向性。,C+将变量名代表的单元称为 “左值”,而将变量的值称为“右值”。 左值必须是内存中一个可以访问且可以合法修改的对象,因此只能是变量名,而不能是常量或表达式。,4.赋值运算符,例如下面的赋值运算是错误的:3.1415926=pi;/左值不能是常数x+y=z;/左值不能是表达式const int N=30;N=40;/左值不能是常变量,5.自增自减运算,运算分前置和后置两种,前置是先增减后引用,即先对变量自加或自减,用新的值参与其他运算;后置则是先引用后增减,即用变量原来的值参与其他运算,然后再对变量进行自加或自减,例如:int i=5, j=5, m, n;m=i+; /后置;相当于m=i; i=i+1; /结果:i的值为6,m的值为5;n=+j; /前置;相当于j=j+1;n=j; /结果:j的值为6,n的值为6;,意义:使变量当前值加1或减1,再赋给该变量。要求:操作数只能是变量,不能是常量或表达式;,ok,sizeof( ) 运算符,用于计算一个操作数类型或一个变量的字节数。一般格式为:sizeof (数据类型) 或 sizeof(变量名) 例如:sizeof(int) 值为4 sizeof( float) 值为4double x; sizeof( x) 值为8,2.5.1结束,2.5.2 表达式,1 算术表达式,2 关系表达式,3 逻辑表达式和逻辑表达式求值的优化,4 赋值表达式与复合赋值表达式,5 逗号表达式,ok,1.算术表达式,使用时注意:1、表达式中每个变量都有确定的值时才能进行表达式求值;2、考虑到算术运算溢出和精度问题,应避免:(1)两个很接近的数直接相减;(2)除数是一个很小的数;(3)整数的连续乘运算。,ok,由算术运算符连接的表达式称为算术表达式,例如:a+b*3 ;,2.关系表达式,例如:a>b>c /*等同于(a>b)>c,先求a>b 的值, 再将结果0或1与c比较大小*/a+b>c+d /*等同于(a+b)>(c+d), 结果为0或1*/y=a>b /*计算a>b的值0或1 赋给y,y的值为0或1*/,由关系运算符连接的表达式。值为true或false。,ok,3.逻辑表达式和逻辑表达式求值的优化,由逻辑运算符连接的表达式称为逻辑表达式。逻辑表达式的值为true或false。这个值可对应整数1或0参与其他运算。,ok,已知: int a=10, b=20, c=30;float x=1.8, y=2.4;,ay|ay)|(a<(b-(!c),t1=1,t2=0,t4=0,-,&&,t3=0,t5=b,<,t6=1,|,得整个表达式的值为:,1,3.逻辑表达式和逻辑表达式求值的优化,在求逻辑表达式值的过程中,一旦表达式的值能够确定,就不再逐步进行下面的运算。称为“求值优化”。,已知: int a=10, b=20, c=30;求: a<b | c+ /结果以及a,b,c的值,t1=1,整个表达式的值为 1,可见: 表达式 c+ 已不需要计算所以: c不变仍为 30,编程人员在使用逻辑运算时应当加以小心,优化计算固然提高了运算效率,但可能产生副作用。所谓副作用,就是出乎设计人员的意料,得到预想不到的结果。,4.赋值表达式与复合赋值表达式,赋值表达式的格式为: 变量 = 表达式 例如:x=5+6;a=b=c=d+1; 在C+中,所有的双目算术运算符和位运算符均可与赋值运算符组合成一个单一运算符,称为复合运赋值算符。包括以下10个:+ = = * = / = % = >= &= | = =复合赋值运算符的要求与格式与赋值运算符完全相同,表示为: 变量 复合赋值运算符 表达式 它等同于 变量 = 变量 运算符 表达式 例如:x+=5 等同于:x=x+5,ok,逗号表达式,C+中,逗号既是分隔符,又是运算符,用逗号连接起来的表达式称为逗号表达式。 一般格式为:表达式1,表达式2,表达式n 逗号表达式中的每一个表达式都会被运算,整个逗号表达式的值为最后一个表达式的值。例如:a=(x=3,x+=6,5+6);/a=11 x=9,2.5.2结束,2.5.3算术类型转换和赋值类型转换,1 不同类型数据的混合运算,2 赋 值 类 型 转 换,ok,运算过程中,当某个二元运算符两边的操作数类型不同但属于类型相容时,系统先将精度低的操作数变换到与另一操作数精度相同,而后再进行运算。,所谓类型相容,指的就是类型不同但系统可以自动进行转换。,当赋值号的左值和右值类型不一致但属于类型相容时,由系统自动进行类型转换。,1.不同类型数据的混合运算,数据类型转换方向,ok,具体规则如下:(1)字符可以作为整数参与数值运算,整数值为其ASCII码。(2)操作数为字符或短整型时,系统自动变换成整型。(3)操作数为实型时,系统自动变换成双精度型。(4)其余情况,当两操作数类型不同时,将精度低(或表示范围小)的操作数的数据类型变换到与另一操作数类型相同再进行运算,例如有变量:char c1, c2; int i1, i2; float x1, x2;则表达式x2=c1*i1+c1*x1+c1*c2的求值过程为:将c1转换成整型,完成c1*i1,结果表示为t1;将c1和x1均转换成双精度型,完成c1*x1,结果表示为t2;将c1和c2均转换成整型,完成c1*c2,结果表示为t3;然后t1转换成双精度型,完成t1+t2,结果表示为t4;将t3转换成双精度型,完成t4+t3,最后结果转为单精度型赋给x2。,2.赋值类型转换,2.5.3结束,系统自动进行类型转换规则:1、实型数赋给整形变量:取整;注意溢出;2、整型数赋给实型变量:先转换为实型数;3、字符型数赋给整形变量:ASCII码为依据;分为两种情况:符号位是0或1时不同;若符号位为1,则低位字节不变,高位字节全部置1再赋值。4、绝对值较大的数赋给表达范围较小的数据类型时,注意溢出;,2.5.4 强制类型转换运算符,ok,其格式为: () /形式一或 ()/形式二,作用:将表达式强制转换为类型, 但表达式的值及其类型不变。,任意数据类型,赋值运算中,当左值与右值类型不一致时,系统将按照左值的类型,自动进行强制转换。,例如: 设有以下定义 double x=2.3,y; int i=2,j;,(1) j,2.3,x,2.3, ,2,2,(1) j=x;(2) y=i;,由系统按左值j 、y类型自动完成强制转换功能,(2) y,2,i,2, ,2.0,2.0,2.5.4 强制类型转换运算符,2.5.5 求值次序与副作用,ok,在符合优先级和结合性的前提下,C语言的标准对表达式中各操作数的求值次序没有做统一规定。,编译器为提高代码质量,在不影响优先级和结合性的前提下也要对操作数的访问次序作调整。在安排顺序时,如果某个操作数经历了求值运算,那么这个求值可能影响到其他操作数的值,这时就会产生副作用。例如,设有int a=2, b=5, c; 对表达式c=a*b+(+a)+(b=10)三个同级运算中,是先算a*b,还是+a,还是b=10,其次再算哪个?显然求值次序不同将导致结果不同。,2.5.6 语句,1 表达式语句:表达式; 2 空语句: ; 3 复合语句: /若干语句 4 流程控制语句:实现三种基本结构的语句;,2.5结束,2.6 简单的输入输出,2.6.1 C+的输入输出,2.6.2 C语言的输入输出,ok,2.6.1 C+的输入输出,cin用来在程序执行期间给变量输入数据,一般格式为:cin>>变量名1>>变量名2>>>>变量名n; cout实现将数据输出到显示器的操作,一般格式为:cout,ok,1.字符的输入输出,cin 与cinget( )的区别(1) cin例如:char c1, c2, c3;cin>>c1;/Acin>>c2>>c3;程序执行到A行时,等待用户输入数据。若输入:A b c 则cin分别将字符A、b、c赋给变量c1、c2、c3。cin自动跳过输入的空白字符(包括空格,制表,backspace和回车等)。,ok,1.字符的输入输出,(2)cinget()例如:char c1, c2, c3, c4;cin.get (c1);/Bcin.get (c2);cin.get (c3);程序执行到B行时,若输入:A b则执行结果是:字符A、空格、字符b分别赋给变量c1、c2、c3;输入行中仍保留回车符。cin.get()把从键盘上输入的所有字符,包括空白字符,都作为输入字符赋给字符变量,ok,1.字符的输入输出,关于字符的输出,请看下例,假定字符c1、c2、c3的值分别为字符a、b和c,执行以下语句序列:cout<<c1<<t<<c2<<n;cout<<c3<<endl;cout<<O<<k<<endl;屏幕上将输出:abcOk输出时字符之间是无间隔的,如果想让字符间有间隔,必须输出间隔符,字符串输入输出,向一个字符数组中输入字符串时,用函数getline() 。getline() 以用户按下回车键作为结束,在此之前的所有输入都放入字符数组中:cin.getline (char ,int)其中第一个参数是已经定义的字符数组名,第二个参数是读入字符的最多个数n(包括字符串结束符/0)。,ok,常用cout输出字符串。双引号中的字符串常量照原样输出,程序中通常通过输出字符串常量来输出一些提示信息。字符数组将输出串结束符前所有字符。,字符串输入输出,函数保证在执行时总会为字符串的结束符保留一个字节。当键盘的输入字符(字节)数多于(n1)时,后面的字符不会进入字符数组,字符串结束符自动加在字符数组的最后一个字节中。当输入字符数少于该值时,字符串结束符自动加在输入到字符数组中的最后一个字符的后面。请看下例:char city11;cin.getline(city, 10); / 输入城市名最多5个中文字cout << “城市名:“ << city << endl;,ok,十进制数据的输入输出,请看下例:int i, j; float x, y;cout>i>>j;/Dcin>>x>>y;cout则程序输出:i=10j=20x+y=13.1输出时各数据间是无间隔的,因此应当有意输出一些间隔符,ok,如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。例如:int i, j, k, l;cout> oct>> i;/输入为八进制数cin>> hex>> j;/输入为十六进制数cin>> k;/输入仍为十六进制数cin>> dec>> l;/输入为十进制数cout<<” hex:”<<” i=”<< hex<< i<< endl;cout<<” dec:”<<” j=”<< dec<< j<<t;cout<<” k=”<< k<< endl;cout<<” oct:”<<” l=”<< oct<< l;cout<< dec << endl; /恢复十进制输出状态,ok,4. 输入输出的格式控制,(1)各种进制数据的输入输出,

    注意事项

    本文(计算机所处理的数据以一定形式存放在内存中,数据的存储方.ppt)为本站会员(tang****xu1)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开