(精品)C语言程序设计(第2章).ppt
《(精品)C语言程序设计(第2章).ppt》由会员分享,可在线阅读,更多相关《(精品)C语言程序设计(第2章).ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高级语言程序设计第二章第二章 数据类型、运算符与表达式数据类型、运算符与表达式莆田学院现代教育技术中心2004年年2月月 制作制作一、C语言的数据类型CC语言的数据类型语言的数据类型 P38基本类型基本类型 字符型字符型(char)1字节 整型整型短整型(short int)2字节 基本型(int)2字节(-3276832767)长整型(long int)4字节(21亿)实型实型单精度(float)4字节 67位有效数字 长单精度(long float)8字节 1516位有效数字 双精度(double)8字节 1516位有效数字 长双精度(long double)10字节 20位有效数字 可知
2、对不同数据类型占用的存储空间可知对不同数据类型占用的存储空间:charshort=intlong=floatdoubleLets try莆田学院现代教育技术中心 2005年3月结果显示:char:1字节 float:4字节求某一类型数据所占存储字节数,可用运算符:sizeof(类型关键字)(类型关键字)Example:main()printf(“char:%d字节n”,sizeof(char);printf(“float:%d字节n”,sizeof(float);莆田学院现代教育技术中心 2005年3月注意事项整型整数 int 的范围:3276832767Example:#include#in
3、clude main()int a;clrscr();printf(“Input:”);scanf(“%d”,&a);printf(“a=%dn”,a);运行结果:Input:12345 a=12345 Input:1234567 a=-10617 Why?!Because:12345的补码是 0011000000111001 1234567的补码是 100101101011010000111 截去多余部份(超过2个字节的左边部分)后 其原码为 1010100101111001(-10617)参见教材P44“整型数据的溢出”。莆田学院现代教育技术中心 2005年3月有趣的结果:输入(Input
4、:)输出(a=)32767 32767 32768 -32768 32769 -32767 32770 -32766 -32768 -32768 -32769 32767 -32770 32766 可用下图表示:32767 32766 32765 -32766 -32767 -32768有趣的结果莆田学院现代教育技术中心 2005年3月注意事项数据存储形式 字符型按ASCII码存储,其余以补码存储 示意图 字符型 (字符a)用一个字节存放该字符的ASCII值(ASCII值表见P374)整 型 (十进制数25037)用两个字节存放该数值的补码 实 型 尾数(补码)指数(阶码)注:第一位均为符号位
5、0110000101100001 110011010110000110100010101010 11100110莆田学院现代教育技术中心 2005年3月补充补充:二进制数的定点和浮点表示二进制数的定点和浮点表示 定点表示法定点表示法小数点位置是小数点位置是“固定的固定的”定点数可用于表示整数。整数在机器中用补码表示。定点数可用于表示整数。整数在机器中用补码表示。对于对于 intint a=8,b=-8;a=8,b=-8;0 0000000 00001000符号位:0正数 1负数 1 0000000 00001000 1 1111111 11110111正数的原码=正数的补码 负数的原码和补码按
6、以下规则相互转换:符号位不变,数值位各位取反,未位加1。0 0000000 00001000原码补码符号位数值位a=810=10002b=-810=-10002真值 1 1111111 11111000莆田学院现代教育技术中心 2005年3月补充补充:二进制数的定点和浮点表示二进制数的定点和浮点表示 浮点表示法浮点表示法小数点位置是小数点位置是“浮动的浮动的”。在计算机中一个浮点数由两部分组成:阶码和尾数,阶在计算机中一个浮点数由两部分组成:阶码和尾数,阶码是指数,尾数是纯小数。浮点表示法可用于表示带小码是指数,尾数是纯小数。浮点表示法可用于表示带小数的数。数的数。(110.011)(110.
7、011)B B=1.10011=1.10011 2 2+10+10=11001.1=11001.1 2 2-10-10=0.110011=0.110011 2 2+11+11 即:即:N=数符数符尾数尾数2阶符阶符阶码阶码 尾数的位数决定数的精度尾数的位数决定数的精度 阶码的位数决定数的范围阶码的位数决定数的范围 数符 尾数 阶符 阶码 0 110011 0 11阶码和数符:0正数 1负数莆田学院现代教育技术中心 2005年3月注意事项整型和字符型均可为unsigned(无符号型)P43图3.4 即将符号位亦作为数值位(默认为signed)此时 int 的范围 065535 char 的范围
8、0 255 Lets try?在C程序中,字符型可与整型(255)互相通用 P50-51输出结果:a,b输出结果:97,98不变d,b 100,98 Example:(参见P50例3.6,ACII值见P374)main()main()char c1,c2;char c1,c2;c1=97;c2=98;c1=97;c2=98;printf(“%c,%cn”,c1,c2);printf(“%d,%dn”,c1,c2);思 考如果将例中char改成int,结果如何?如果将c1=97改为c1=97+3,结果如何?Lets try莆田学院现代教育技术中心 2005年3月二、常量整型常量 P41 十进制数
9、 12 -12l 或-12L 700000ul 八进制数 012 -012l 十六进制数 0 x12 -0 x12l实型常量 P45 十进制形式 123.45 2.0 (必有小数点)指数形式 2.45e-4 1.13E3 (e或E前为数,后为整数)实型常量本身无单或双精度,其机内精度取决于赋给那类变量(影响有效数字位数,见P15示例)字符常量/字符串常量莆田学院现代教育技术中心 2005年3月字符常量 P48普通字符(可显示字符)A?(只能单字符单引号)错误:ABC “A”转义字符(在单引号或双引号中以开头)如回车符、单引号、反斜杠等 在程序中这些符号用表3.3所示的“转义字符”表示。字符串(
10、用双引号括起)“A”“?”(以0为字符串结束标志)注意:用char定义的字符变量只能接受字符常量,而不能接受字符串常量(C语言中无字符串变量)char a=U;char b=“U”;(b被置为某随机值)Example:main()char c1=a,c2;c2=98;printf(“%d,%dn”,c1,c2);结果:97,98Example:main()char c1=“a”,c2;c2=98;printf(“%d,%dn”,c1,c2);结果:-108,98若让若让c1c1分别等于分别等于“U U”、“ABCABC”、“A A”结果结果不变不变随机值莆田学院现代教育技术中心 2005年3月
11、转义字符例题分析Example:main()char ch;ch=362;printf(“%c,%d”,ch,ch);运行结果运行结果运行结果运行结果:,14ch=3628=24210=111100102 111100102 化为原码为化为原码为 10001110=1410莆田学院现代教育技术中心 2005年3月转义字符例题分析Example:#include main()printf(“an”x41”);printf(“%dn”,strlen(“an”x41”);运行结果:a “A 4注:strlen为求字符串字节数函数(不计结束标志0)。莆田学院现代教育技术中心 2005年3月转义字符例题
12、分析Example:P49例3.5main()printf(“_ _ a b _ c t _ d e r f t g n”);printf(“h t I b b j _ _ _ k”);运行结果:_ _ a b _ c _ _ a b _ c _ _ _ d e f _ a b _ c _ _ _ d e f _ _ _ _ _ _ _ g d eh h _ _ _ _ _ _ _ lh _ _ _ _ _ _ _ h _ _ _ _ _ _h _ _ _ _ _ _ j _ _ _ k8列8列8列莆田学院现代教育技术中心 2005年3月什么时候要使用转义字符?转义字符只在特殊情况下才使用:C
13、程序中需要实现某些特定打印或显示动作时 如 printf(“123t56n”);C程序中需要打印或显示以下三个字符时 (斜杠)(双引号)(单引号)如 printf(“Youre a”a bad egg!”);C程序中需要打印或显示ASCII表中非键盘字符时 如 printf(“Look 16 and x80!”);注意:使用转义字符时,后的八进制或十六进制数不应大于char类型所允许的范围(十进制值256)。莆田学院现代教育技术中心 2005年3月字符串常量有关问题与“”的区别问题(判断正误):char c=“China”;char c=China;“China”占几个字节?141占几个字节?
14、0等于十进制等于十进制数数97即字符即字符a莆田学院现代教育技术中心 2005年3月三、变量赋值 P53 例:b=(a=3+5)a=b=c=d=3+5 (结果均为8)例:int a=b=c=d=3+5 (语法错误,除非b,c,d定义过)正确:int a,b=a=3+5;例:c=3+(a=5)*6 结果:c=33,a=5(一个语句可以有几个赋值运算)变量必须先定义后使用变量名必须符合标识符命名规则 P40莆田学院现代教育技术中心 2005年3月四、数据间的转换(混合运算)数据的类型级别 P54图3.10基本规则q不同类型运算量参加运算,遵守“向高看齐”的类型一致化规则:将长度较短的运算量转换为长
15、度较长的运算量,以保证不丢失信息。q将实型常量赋给整型变量,将被自动取整 int a=7.999999;等效于 int a=7;qfloat型只要参加运算,均自动转为double。main()float i=3,j=4;printf(“%dn”,sizeof(i+j);/*结果为8(双精度)*/q两个整型数相除,其值也一定是整型数(取商之整数部分)。3/2的值为1而非1.5莆田学院现代教育技术中心 2005年3月强制类型转换 P56 例一:(int)3.5 的值是多少?例二:main()int x=5;float y=3.5;clrscr();/*clear screen(清屏)*/print
16、f(“%d”,(int)y+x);结果是什么?8一般形式:(类型名)(表达式)转换后表达式的数据类型为新的类型,但表达式中变量本身类型不变。3程序执行后y的类型是什么?莆田学院现代教育技术中心 2005年3月五、算术运算符和算术表达式C语言运算符(13类)P551、算术运算算术运算符 +*/%+例:14%(-4)=2 -14%(-4)=-2 20.4%2(出错)例:若int a=7;float x=2.5,y=4.7;则表达式 x+a%3x+a%3*(int)(x+y)%2/4(int)(x+y)%2/4 的值是什么?2.500000 (1/4为0)例:float x,y;x%y;(出错)莆田
17、学院现代教育技术中心 2005年3月五、算术运算符和算术表达式(续)自反算术赋值运算符(复合的赋值运算符)P62+=-=*=/=等 解法:将b*=看作b=b*(),其余类推 例:c=b*=a+3 相当于(1)a+3 (2)b=b*(a+3)(3)c=b 例:若 i、j 的初值分别为3和4,则执行 j+=i-=1 后i、j 的值为多少?解题步骤:解题步骤:i=i-1=3-1=2 j=j+i=4+2=6结果:i=2,j=6莆田学院现代教育技术中心 2005年3月关于优先级和结合方向:P56 C语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行。如果在一个运算对象两侧
18、的运算符的优先级别相同,则按规定的结合方向处理。(各种运算符的优先级和结合性见P375附录)【例】设i、j初值分别为3和4,则执行 j+=i-=1;后 i,j的值为多少?【例】若x=7;则x+=x-=x+x的值是多少?五、算术运算符和算术表达式(续)(i=2,j=6)(-14)解法:从右到左,先做x=x-(x+x)=-7,再做x=x+x=-14莆田学院现代教育技术中心 2005年3月五、算术运算符和算术表达式(续)自加、自减运算符 P57+(自加运算符)-(自减运算符)用法:+1 -1 运算 a、前缀形式 intint i=5;x=+i;y=i;i=5;x=+i;y=i;(x=6,i=6,y=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 语言程序设计
限制150内