《程序设计基础(C语言):Ch2_数据表示及数据运算》由会员分享,可在线阅读,更多相关《程序设计基础(C语言):Ch2_数据表示及数据运算(36页珍藏版)》请在金锄头文库上搜索。
1、Chapter 2Data Representation & EvaluationLearning Guide内容概述(Contents in Brief) 重要内容(Important Parts) 教学目标(Objectives) 重要习题(Important Exercises)学习难点(Difficulties) l内容概述内容概述(Contents in Brief)数据类型(Data Type)常量(Constant)变量(Variable)运算符及表达式(Operators & Expressions)综合实例(Integrated Instances)Important Par
2、ts2.7 不同数据类型间的混合运算2.8.3 自增/自减运算符Objectives理解数据类型的概念理解数据类型的概念根据运算结果类型正确求值根据运算结果类型正确求值+/-运算符的综合使用运算符的综合使用Difficulties数据类型自增(+)/自减(-)运算符Important Exercises习题: 一、二、三、 四、2. 4. 五、-实例实例1 e.g. 等于等于13的常量涉及到的类型有的常量涉及到的类型有哪些?哪些?(Ans. 11)l数据类型数据类型(Data Type)(Data Type)i.无小数部分类型无小数部分类型 (Without Fraction Part)000
3、000000000110100000000000000000000000000001101无符号短整型无符号短整型:无符号长整型无符号长整型:无符号整型无符号整型: 长度介于上面两种之间长度介于上面两种之间无符号字符型无符号字符型:00001101000000000000110100000000000000000000000000001101有符号短整型有符号短整型:有符号长整型有符号长整型:有符号整型有符号整型: 长度介于上面两种之长度介于上面两种之间间有符号字符型有符号字符型:00001101ii.有小数部分类型有小数部分类型(With Fraction Part)0 011010. .
4、. 0. . . 100 0 011010. . . 0. . . 100 双精度型双精度型:长双精度型长双精度型:单精度型单精度型:0 011010. . . 0. . . 10013d=1101b=0. 1101b2100b-实例实例2e.g. 等于-13的常量涉及到的类型有哪些?(Ans. 7)i.无小数部分类型无小数部分类型(Without Fraction Part)111111111111001111111111111111111111111111110011有符号短整型:有符号长整型:有符号整型: 长度介于上面两种之间有符号字符型:11110011ii.有小数部分类型有小数部分类
5、型(With Fraction Part)1 100110. . . 0. . . 100 1 100110. . . 0. . . 100 双精度型双精度型:长双精度型长双精度型:单精度型单精度型:1 100110. . . 0. . . 100-13d=-1101b=-0. 1101b2100b-取值范围取值范围(Values Range)无符号字符型无符号字符型(unsigned char)a.最小/最大 00000000对应最小;而11111111对应最大。b.(11111111)2=( ? )10 (11111111)2=(100000000)2-1 =28-1 =255有符号字符型
6、有符号字符型(char)01111111对应最大。它等于27-110000000作为补码,对应最小负数:-27-舍去误差实例舍去误差实例e.g. 0.1101分析:分析:0.1d=(0.00011001100)b =(0.11001100)b2-11b 存储存储0.1时存在舍去误差时存在舍去误差-数据类型小结数据类型小结(Summary)数据类型涉及量的存储单元的大小数据类型涉及量的存储单元的大小和量的表示方法和量的表示方法每种类型都是有取值范围的每种类型都是有取值范围的带小数的类型存在舍去误差带小数的类型存在舍去误差无小数部分有小数部分常量类型常量类型”3”字符串型3.0双精度型3有符号字符
7、型有符号字符型0.3e1双精度型3有符号整型有符号整型3.F单精度型3U无符号整型无符号整型.3e1F单精度型3L有符号长整型有符号长整型32768有符号长整型有符号长整型l常量的类型规定常量的类型规定无小数部分有小数部分有符号短整型有符号短整型ishort int i单精度型单精度型ifloat i有符号整型有符号整型iint i双精度型双精度型i double i有符号长整型有符号长整型ilong i长双精度型长双精度型ilong double i有符号字符型有符号字符型ichar i无符号短整型无符号短整型iunsigned short i无符号整型无符号整型iunsigned int
8、i无符号长整型无符号长整型iunsigned long i无符号字符型无符号字符型unsigned char il变量的声明规定变量的声明规定变量的声明规定变量的声明规定l运算结果的类型运算结果的类型 n运算前两个运算量要转成同一类型。该类运算前两个运算量要转成同一类型。该类型就是运算结果的类型。知道它,才能正确型就是运算结果的类型。知道它,才能正确求值和正确输出求值和正确输出n结果的类型不低于两运算量类型级别最高结果的类型不低于两运算量类型级别最高者。一般而言,结果的类型就是它们类型的者。一般而言,结果的类型就是它们类型的最高者。最高者。 Note: 类型有级别属性类型有级别属性l运算结果类
9、型示例运算结果类型示例=0(结果类型为int)-3/2=-1(结果类型为int。多数取靠向零的那一个)1.2/6=0.2(结果类型为double)32768/2=16384(结果类型为long)A+1=65+49=114 (结果类型为int。 A被视为65。65为A的ASCII代码值)l自增自增/ /自减自减(+/-)(+/-)运算符运算符e.g. i+ (要求(要求i为整数类型)为整数类型)运算量:运算量: i运算运算/处理:处理:ii+1表达式的值:取表达式的值:取i变化前的值变化前的值表达式的类型:同表达式的类型:同il运算量:运算量: il运算运算/处理:处理:ii+1l表达式的值:取
10、表达式的值:取i变化后的值变化后的值l表达式的类型:同表达式的类型:同ie.g. +i (要求i为整数类型)l运算量:运算量: il运算运算/处理:处理:ii-1l表达式的值:取表达式的值:取i变化前的值变化前的值l表达式的类型:同表达式的类型:同ie.g. i-(要求i为整数类型)l运算量:运算量: il运算运算/处理:处理:ii-1l表达式的值:取表达式的值:取i变化后的值变化后的值l表达式的类型:同表达式的类型:同ie.g. -i(要求i为整数类型)l赋值运算符实例赋值运算符实例e.g. x=2.5; ( int x )运算量:运算量:x, 2.5 (double)运算运算/处理:处理:
11、x2.5 (赋值后赋值后x的值为的值为2)表达式的值:同表达式的值:同x表达式的类型:同表达式的类型:同x赋值运算符“=”左侧的量称左值(Left Value)。规定:赋值运算后产生的结果同于左值。而结果的类型亦同于左值。e.g. x*=2.8; ( int x=2)运算量:运算量:x, 2.8 (double)运算运算/处理:处理:xx*2.8 (赋值后赋值后x的的值为值为5)表达式的值:同表达式的值:同x表达式的类型:同表达式的类型:同xe.g. a+=a-=a*=a ( 假设假设: int a=12)分析:该式等价于:分析:该式等价于: a+=(a-=(a*=a) a*=a的值为的值为1
12、44,与,与a相同相同a-=(a*=a)的值为的值为0,与与a相同相同 所以,原式的值为所以,原式的值为0Summary赋值表达式的值和类型同赋值表达式的值和类型同左值左值赋值运算符是右结合的赋值运算符是右结合的l表达式综合实例表达式综合实例1 已知:变量i的初值为零。下列每个表达式被单独执行十次。问:最后一次执行后,每个表达式的值为多少? A. +i (Ans. 10) B. i+ (Ans. 9) C. -i (Ans. -10) D. i- (Ans. -9) 列表观察列表观察i+ i+ timesi (before)i+i (after)10012112322343345445lPro
13、perty: i+被多次执行,其值是递增的+/-+/-运算符使用要点运算符使用要点+i/ i+: i增一且多次执行递增;前者同步于i但后者滞后于i- i/ i-: i减一且多次执行递减;前者同步于i但后者滞后于iAssignment2.1 下面赋值表达式被单独执行后,下面赋值表达式被单独执行后,a的的值是多少?(已知值是多少?(已知: int a=12; int n=5;)(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2)l表达式综合实例表达式综合实例2在屏幕上输出五行在屏幕上输出五行”Welcome to Beijing”。 #include void main() int i=0; while(i+5) printf(”Welcome to Beijingn”); 问题:若将问题:若将i+换成换成+i, 则输出是什么?则输出是什么? Ans. 4 linesAssignment2.2 在屏幕上输出五行在屏幕上输出五行”Welcome to Beijing”。请填空。请填空。 #include void main() int i=1; while(i- ) printf(”Welcome to Beijingn”); 2.3对于上题,若将对于上题,若将i-换成换成-i, 则该填什么?则该填什么?