好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

清华C语言程序设计第02章数据类型运算符与表达式.ppt

35页
  • 卖家[上传人]:s9****2
  • 文档编号:590960201
  • 上传时间:2024-09-16
  • 文档格式:PPT
  • 文档大小:145.51KB
  • / 35 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第第2 2章章 数据类型、运算符与表达式数据类型、运算符与表达式 讲授内容讲授内容nC++C++语言的基本元素、字符集和关键字语言的基本元素、字符集和关键字n基本的数据类型的表示方法基本的数据类型的表示方法n常量和变量常量和变量n类型转换类型转换n各种运算符与表达式各种运算符与表达式2 2.1 C++2.1 C++的字符集和关键字的字符集和关键字(1/2)(1/2)n字符集字符集n由由52个字母、个字母、10个数字、个数字、27个特殊字符组个特殊字符组成成n所有所有C++程序(程序(忽略换行符和字符串常量中忽略换行符和字符串常量中的内容的内容)都由字符集中的字符按一定规则构)都由字符集中的字符按一定规则构成成3 2.1 C++2.1 C++的字符集和关键字的字符集和关键字(2/2)(2/2)nC++标识符是满足如下条件的一串字符标识符是满足如下条件的一串字符n由字母由字母(a~z,A~Z)或下划线或下划线(_)开头;开头;n其其它它部部分分可可以以由由字字母母、、下下划划线线或或数数字字(0~9)组成;组成;n只有前只有前32个字符有效;个字符有效;nC++的的63个关键字也是标识符,但不能个关键字也是标识符,但不能作其它用(保留字)作其它用(保留字)4 2.2基本数据类型基本数据类型(1/5)(1/5)nC++程序中的每个数据对象(如程序中的每个数据对象(如2、、x1、、x1+2))都有确定的数据类型都有确定的数据类型nC++的数据类型包括基本数据类型和复合的数据类型包括基本数据类型和复合数据类型数据类型n基本数据类型有基本数据类型有整型、浮点型、字符型、布尔型整型、浮点型、字符型、布尔型n不同数据类型有自己的取值范围和所允不同数据类型有自己的取值范围和所允许的操作许的操作5 2.2基本数据类型基本数据类型(2/5)(2/5)n整型整型nsigned short int (简写为简写为 short )nsigned int (简写为简写为 int )nsigned long int (简写为简写为 long )nunsigned short int (简写为简写为 unsigned short)nunsigned int (简写为简写为 unsigned )nunsigned long int (简写为简写为 unsigned long)6 2.2基本数据类型基本数据类型(3/5)(3/5)n浮点型浮点型nfloat (浮点型浮点型)ndouble (双精度型双精度型)nlong double (长双精度型长双精度型)n均有符号均有符号n不允许的操作:取余%、位运算等不允许的操作:取余%、位运算等7 2.2基本数据类型基本数据类型(4/5)(4/5)n字符型字符型ncharnsigned charnunsigned char n实质是占一个字节的整型数(小整数)实质是占一个字节的整型数(小整数)n允许的操作:和整型相同允许的操作:和整型相同8 2.2基本数据类型基本数据类型(5/5)(5/5)n布尔型布尔型nbooln值为值为true和和falsen可以当作整数用(可以当作整数用(true一般为一般为1,,false为为0))n把其它类型的值转换为布尔值时,非零值转把其它类型的值转换为布尔值时,非零值转换为换为true,,零值转换为零值转换为false9 2.32.3 变量与常量变量与常量(1/9)(1/9)n函数体函数体n说明语句说明语句n类型名、变量、常量表达式类型名、变量、常量表达式n执行语句执行语句n表达式表达式n变量、常量、运算符变量、常量、运算符10 2.32.3 变量与常量变量与常量(2/9)(2/9)n扩充的巴克斯范式扩充的巴克斯范式 n表示语法(全书统一,不涉及语义)表示语法(全书统一,不涉及语义)<非非0数字数字> → 1|2|3|4|5|6|7|8|9<八进制数字八进制数字> → 0|1|2|3|4|5|6|7<十六进制数字十六进制数字> → 0|1|2|3|4|5|6|7|8|9| a|b|c|d|e|f|A|B|C|D|E|F<整型后缀整型后缀> → <无符号整型后缀无符号整型后缀>[<长整型后缀长整型后缀>] | <长整型后缀长整型后缀>[<无符号整型后缀无符号整型后缀>]<无符号整型后缀无符号整型后缀> → u|U<长整型后缀长整型后缀> → l|L<八进制整型常量八进制整型常量> → 0<八进制数字八进制数字>{<八进制数字八进制数字>}11 2.32.3 变量与常量变量与常量(3/9)(3/9)n扩充的巴克斯范式扩充的巴克斯范式 <整型常量整型常量> → <十进制整型常量十进制整型常量> [<整型后缀整型后缀>] | <八进制整型常量八进制整型常量> [<整型后缀整型后缀>] | <十六进制整型常量十六进制整型常量> [<整型后缀整型后缀>]<十进制整型常量十进制整型常量> → 0|<非非0数字数字>{<数字数字>} <八进制整型常量八进制整型常量> → 0<八进制数字八进制数字>{<八进制数字八进制数字>}<十六进制整型常量十六进制整型常量> → 0x<十六进制数字十六进制数字>{<十六进制十六进制数字数字>} | 0X<十六进制数字十六进制数字>{<十六进制数字十六进制数字>}<数字数字> → 0|1|2|3|4|5|6|7|8|912 2.32.3 变量与常量变量与常量(4/9)(4/9)n扩充的巴克斯范式扩充的巴克斯范式 <浮点常量浮点常量> → <尾数部分尾数部分>[<指数部分指数部分>][<浮点后缀浮点后缀>] | <数字串数字串><指数部分指数部分>[<浮点后缀浮点后缀>] <尾数部分尾数部分> → [<数字串数字串>].<数字串数字串>|<数字串数字串>. <指数部分指数部分> → e[<符号符号>]<数字串数字串> | E[<符号符号>]<数字串数字串><符号符号> → + | ­<数字串数字串> → <数字数字>{<数字数字>}<浮点后缀浮点后缀> → f|l|F|L13 2.32.3 变量与常量变量与常量(5/9)(5/9)n扩充的巴克斯范式扩充的巴克斯范式 <字符型常量字符型常量> → ‘ → 字符集中除单引号字符集中除单引号’、反斜线、反斜线\外的任意字外的任意字符符 | <转义序列转义序列><转义序列转义序列> → <简单转义序列简单转义序列>|<八进制转义序列八进制转义序列>| <十六进制转义序列十六进制转义序列><简单转义序列简单转义序列 > → \’|\“|\?|\\|\a|\b|\f|\n| \r|\t|\v<八进制转义序列八进制转义序列> → \<八进制数字八进制数字> | \<八进制数字八进制数字> <八进制数字八进制数字> | \<八进制数字八进制数字><八进制数字八进制数字><八进制数字八进制数字> <十六进制转义序列十六进制转义序列> → \x<十六进制数字十六进制数字>{<十六进制十六进制数字数字>}14 2.32.3 变量与常量变量与常量(6/9)(6/9)n扩充的巴克斯范式扩充的巴克斯范式 <字符串常量字符串常量> → “[]” {} → 字符集中除双引号字符集中除双引号“、反斜线、反斜线\外的任意字外的任意字符符 | 其它可显示字符其它可显示字符 | <转义序列转义序列>15 2.32.3 变量与常量变量与常量(7/9)(7/9)n变量变量n四要素:四要素:n变量名、类型、存储空间、值变量名、类型、存储空间、值n必须先声明后使用,一般声明形式为:必须先声明后使用,一般声明形式为:<变量声明变量声明> → <存储类别描述符存储类别描述符><类型描述符类型描述符><变量表变量表><存储类别描述符存储类别描述符> → auto|register|static|extern<类型描述符类型描述符> → <类型名类型名><变量表变量表> → <标识符列表标识符列表><标识符列表标识符列表> → <非关键字标识符非关键字标识符>{,<非关键字标识符非关键字标识符>}16 2.32.3 变量与常量变量与常量(8/9)(8/9)n符号常量符号常量 n符号常量是经过定义的代表常量的标识符符号常量是经过定义的代表常量的标识符nC++定义符号常量的格式如下:定义符号常量的格式如下: #define <标识符标识符> <常量常量>#define是是C++的的预预处处理理指指令令,,说说明明程程序序中中的的<标识符标识符>都代表了都代表了<常量常量>。

      17 2.32.3 变量与常量变量与常量(9/9)(9/9)例子:例子:#define PRICE 30#include main(){ int num, total; num=10; total=num* PRICE; cout<<"total= "<))<表达式表达式> 或或 <类型类型>((<表达式表达式>))n例如:例如: (double)3/2 或或 double(3)/2 (double)(3/2)或或 double(3/2)22 2.52.5 运算符和表达式运算符和表达式(1/11)(1/11)n运算符的优先级和结合性运算符的优先级和结合性 n运算符包括运算符包括: 算术运算符、关系运算符、算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符逻辑运算符、位运算符、赋值运算符 n根据组成表达式的运算符的不同,表达根据组成表达式的运算符的不同,表达式可以分为算术表达式、关系表达式、式可以分为算术表达式、关系表达式、逻辑表达式、位运算表达式、逗号表达逻辑表达式、位运算表达式、逗号表达式和赋值表达式式和赋值表达式23 2.52.5 运算符和表达式运算符和表达式(2/11)(2/11)n算术运算之一:一元算术运算算术运算之一:一元算术运算 + 正,运算结果同操作数正,运算结果同操作数 ­ 负,运算结果为操作数的负数负,运算结果为操作数的负数 ++ 自增运算符;操作数的位置?自增运算符;操作数的位置? ­­ 自减运算符自减运算符24 2.52.5 运算符和表达式运算符和表达式(3/11)(3/11)n算术运算之一:基本算术运算(二元)算术运算之一:基本算术运算(二元) + 加法,运算结果为两个操作数的和加法,运算结果为两个操作数的和 ­ 减法,运算结果为左操作数减去右操作数的差减法,运算结果为左操作数减去右操作数的差 * 乘法,运算结果为两个操作数的乘积乘法,运算结果为两个操作数的乘积 / 除法,运算结果为左操作数除以右操作数的商除法,运算结果为左操作数除以右操作数的商 %% 求求余余,,运运算算结结果果为为左左操操作作数数除除以以右右操操作作数数的的余余数数,,只用于整型数据,其结果也是整型只用于整型数据,其结果也是整型25 2.52.5 运算符和表达式运算符和表达式(4/11)(4/11)n算术运算之一:基本算术运算算术运算之一:基本算术运算n两个整数作两个整数作/运算,其结果为整数运算,其结果为整数n具体结果依赖于具体机器,一般为直接截去小数具体结果依赖于具体机器,一般为直接截去小数部分部分n两个整数求余%两个整数求余%n如果两数都是正数,结果为正如果两数都是正数,结果为正n否则结果与左操作数的符号一致(否则结果与左操作数的符号一致(Microsoft C++)) 26 2.52.5 运算符和表达式运算符和表达式(5/11)(5/11)n算术表达式算术表达式<算算术术表表达达式式> → <常常量量> | <变变量量> | +<操操作作数数> | ­<操操作作数数> | <操操作作数数>++ | ++<操操作作数数> | <操操作作数数>­­ | ­­<操操作作数数> | <操操作作数数> <二二元元算算术术运运算算符符> <操作数操作数> | (<算术表达式算术表达式>)<操作数操作数> → <表达式表达式>27 2.52.5 运算符和表达式运算符和表达式(6/11)(6/11)n关系运算关系运算 <关系表达式关系表达式> → <操作数操作数> <关系运算符关系运算符> <操作数操作数><关系运算符关系运算符> → <|>|<=|>=|==|!=28 2.52.5 运算符和表达式运算符和表达式(7/11)(7/11)n逻辑运算逻辑运算<逻逻辑辑表表达达式式> → <布布尔尔型型常常量量> | <布布尔尔型型变变量量> | <关关系系表表达达式式> | <操操作作数数>&&<操操作作数数> | <操操作作数数> ||<操作数操作数> | !!<逻辑表达式逻辑表达式> | (<逻辑表达式逻辑表达式>)Ø!、!、||、、 && 的优先级和结合性的优先级和结合性Ø逻辑表达式的逻辑表达式的“短路计算法短路计算法” (慎用自增、自减)慎用自增、自减)29 2.52.5 运算符和表达式运算符和表达式(8/11)(8/11)n位运算位运算 <位位运运算算表表达达式式> → ~<操操作作数数> | <操操作作数数>&<操操作作数数> | <操操作作数数>|<操操作作数数> | <操操作作数数>^<操操作作数数> | <操作数操作数> << <操作数操作数> | <操作数操作数> >> <操作数操作数>Ø操作数只能是整型或字符型数据,结果亦然操作数只能是整型或字符型数据,结果亦然Ø符号位参加运算符号位参加运算Ø向右移位运算,但左操作数是负数时,高位填向右移位运算,但左操作数是负数时,高位填0或或130 2.52.5 运算符和表达式运算符和表达式(9/11)(9/11)n逗号运算逗号运算 <逗号表达式逗号表达式> → <表达式表达式> , <表达式表达式>Ø二元运算,左结合二元运算,左结合Ø先左后右计算表达式的值,取右表达式的值为运算结先左后右计算表达式的值,取右表达式的值为运算结果果Ø逗号的左、右表达式作为逗号运算符的操作数,类型逗号的左、右表达式作为逗号运算符的操作数,类型可以不同可以不同31 2.52.5 运算符和表达式运算符和表达式(10/11)(10/11)n赋值运算赋值运算 <赋值表达式赋值表达式> → <变量变量> <赋值运算符赋值运算符> <表达式表达式> <赋值运算符赋值运算符> → = | *= | /= | %= | += | ­= | >>= | <<= | &= | ^= | |=Ø二元运算,右结合二元运算,右结合Ø<变量变量>可以是由标识符表示的变量,也可以是数组元可以是由标识符表示的变量,也可以是数组元素或指针指向的存储空间(素或指针指向的存储空间(“左值性质左值性质”))Ø赋值运算可用于变量初始化,运算符右边的表达式需赋值运算可用于变量初始化,运算符右边的表达式需编译时可计算编译时可计算32 2.52.5 运算符和表达式运算符和表达式(11/11)(11/11)n条件运算符条件运算符 <表达式表达式1> ? <表达式表达式2> : <表达式表达式3> Ø三元运算三元运算Ø运算符的操作数类型可以不同运算符的操作数类型可以不同33 学习目的检测学习目的检测n理解字符集、标识符和关键字的意义理解字符集、标识符和关键字的意义n掌握基本数据类型的定义及不同数据类掌握基本数据类型的定义及不同数据类型之间的转换机制型之间的转换机制n掌握各种常量的性质和定义掌握各种常量的性质和定义n掌握变量的声明方法掌握变量的声明方法n熟练运用各种运算符与表达式熟练运用各种运算符与表达式34 作业作业 2.8、、2.10、、2.11、、2.12、、2.14、、 2.15、、2.16、、2.18、、2.1935 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.