资源预览内容
第1页 / 共52页
第2页 / 共52页
第3页 / 共52页
第4页 / 共52页
第5页 / 共52页
第6页 / 共52页
第7页 / 共52页
第8页 / 共52页
第9页 / 共52页
第10页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第二章 数据描述、运算符和表达式 1C程序设计ch2数据描述内容提要预备知识预备知识数据类型数据类型常量与变量常量与变量运算符和表达式运算符和表达式不同类型数据间的转换不同类型数据间的转换2C程序设计ch2数据描述2.0 预备知识预备知识计算机中数的表示及进制转换计算机中数的表示及进制转换数码、基与权数码、基与权数码:表示数的符号数码:表示数的符号基:数码的个数基:数码的个数权:每一位所具有的值权:每一位所具有的值数制数制3C程序设计ch2数据描述数制基权表示数码特点10,10,10,十进制数0910逢十进一二进制数0122,2,2,逢二进一八进制数0788,8,8,逢八进一十六进制数09,AF,af1616,16,16,逢十六进一十进制:4956= 410+910 +510+610二进制:1011=12+02 +12+12十六进制:81AE=816+116 +1016+1416八进制:4275=48+28 +78+584C程序设计ch2数据描述各种进制之间的转换各种进制之间的转换二进制、八进制、十六进制转换成十进制二进制、八进制、十六进制转换成十进制方法:按权相加方法:按权相加5C程序设计ch2数据描述十进制转换成二进制、八进制、十六进制十进制转换成二进制、八进制、十六进制原理:原理:方法:连续除以基,从低到高记录余数,直至方法:连续除以基,从低到高记录余数,直至商为商为0例 把十进制数59转换成二进制数5922921427232120(59)10=(111011)21101111 1 1 0 1 1余余余余余余例 把十进制数159转换成八进制数1598198280(159)10=(237)82 3 7 余 7余 3余 2例 把十进制数459转换成十六进制数4591628161160(459)10=(1CB)161 C B 余11余12余 16C程序设计ch2数据描述二进制与八进制之间的转换二进制与八进制之间的转换二进制转换成八进制:从右向左,每二进制转换成八进制:从右向左,每3位一组(不位一组(不足足3位左补位左补0),转换成八进制),转换成八进制八进制转换成二进制:用八进制转换成二进制:用3位二进制数代替每一位位二进制数代替每一位八进制数八进制数例 (1101001)2=(001,101,001)2=(151)8例 (246)8=(010,100,110)2=(10100110)2000000110102011310041015110611177C程序设计ch2数据描述二进制与十六进制之间的转换二进制与十六进制之间的转换二进制转换成十六进制:从右向左,每二进制转换成十六进制:从右向左,每4位一组位一组(不足(不足4位左补位左补0),转换成十六进制),转换成十六进制十六进制转换成二进制:用十六进制转换成二进制:用4位二进制数代替每一位二进制数代替每一位十六进制数位十六进制数例 (111)2=(0011,0101,0111,1101)2=(357D)16例 (4B9E)16=(0100,1011,1001,1110)2=(1110)2000000001100102001130100401015011060111710008100191010A1011B1100C1101D1110E1111F8C程序设计ch2数据描述字节和位字节和位内存以字节为单元组成内存以字节为单元组成每个字节有一个地址每个字节有一个地址一个字节一般由一个字节一般由8个二进制位组成个二进制位组成每个二进位的值是每个二进位的值是0或或101234567012345678910.76432519C程序设计ch2数据描述数值的表示方法数值的表示方法原码、反码和补码原码、反码和补码原码:最高位为符号位,其余各位为数值本身的绝对值原码:最高位为符号位,其余各位为数值本身的绝对值反码:反码:正数:反码与原码相同正数:反码与原码相同负数:符号位为负数:符号位为1,其余位对原码取反,其余位对原码取反补码:补码:正数:原码、反码、补码相同正数:原码、反码、补码相同负数:最高位为负数:最高位为1,其余位为原码取反,再对整个数加,其余位为原码取反,再对整个数加13126912457810119-5=49+7=16=(14)1210C程序设计ch2数据描述原码反码补码+7-7111+0-0数的范围01111111(-127+127)01111111(-127+127)01111111(-128+127)(用一字节表示数)负数补码转换成十进制数:最高位不动,其余位取反加负数补码转换成十进制数:最高位不动,其余位取反加1例例 补码:补码:11111001 取反:取反:10000110 加加1: 10000111=-711C程序设计ch2数据描述C程序的元素CTokenskeywordsIdentifiersConstantsStringe.g.“ABC”Specialsymbolse.g.Operator12C程序设计ch2数据描述2.1 数据类型数据类型数据类型总表数据类型总表C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void定义类型定义类型typedef字符类型字符类型char枚举类型枚举类型enum整整 型型实型实型单精度型单精度型float双精度型双精度型double数组数组结构体结构体struct共用体共用体union短整型短整型short长整型长整型long整型整型int数据类型决定:数据类型决定:1. 数据占内存字节数数据占内存字节数2. 数据取值范围数据取值范围3. 其上可进行的操作其上可进行的操作13C程序设计ch2数据描述ANSI CANSI C基本数据类型基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsignedint0655353204294967295unsignedlongunsignedshort16065535有float32-3.4e383.4e38有double64-1.7e3081.7e308有(signed) char8-128127无unsigned char80255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例:14C程序设计ch2数据描述01 11 11 11 11 11 11 11int型:最大:3276710 00 00 00 00 00 00 00最小:-3276811 11 11 11 11 11 11 11unsigned int型:最大:6553500 00 00 00 00 00 00 00最小:015C程序设计ch2数据描述2.2 常量与变量常量与变量2.2.1 标识符标识符定义:用来标识变量、常量、函数等的字符序列定义:用来标识变量、常量、函数等的字符序列组成:组成:只能由只能由字母字母、数字数字、下划线下划线组成,且第一个字母必须是字母或下组成,且第一个字母必须是字母或下划线划线大小写敏感大小写敏感不能使用关键字不能使用关键字长度:最长长度:最长32个字符个字符命名原则:命名原则:见名知意见名知意不宜混淆不宜混淆 如如l与与I, o与与0例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3charab_above$123M.D.John3days#33char$123ab16C程序设计ch2数据描述2.2.2 2.2.2 常量常量定义:程序运行时其值不能改变的量(即常数)定义:程序运行时其值不能改变的量(即常数)Constants/常量数值常量字符常量整型实型单字符字符串17C程序设计ch2数据描述一般用大写字母一般用大写字母是宏定义预处理命令,不是是宏定义预处理命令,不是C语句语句直接常量直接常量: :整型常量整型常量 实型常量实型常量 字符常量字符常量 字符串常量字符串常量如如 #define PRICE 30常量表示法常量表示法: :符号常量符号常量: :用标识符代表常量用标识符代表常量定义格式:定义格式: #define#define 符号常量符号常量 常量常量例例 符号常量举例符号常量举例#define PRICE 30main() int num,total; num=10; total=num*PRICE; printf(total=%d,total);运行结果:运行结果:total=30018C程序设计ch2数据描述&整型常量(整常数)整型常量(整常数)三种形式:三种形式:十进制整数:由数字十进制整数:由数字0 09 9和正负号表示和正负号表示. .如如 123,-456,0123,-456,0八进制整数:由数字八进制整数:由数字0 0开头开头, ,后跟数字后跟数字0 07 7表示表示. .如如0123,0110123,011十六进制整数:由十六进制整数:由0x0x开头开头, ,后跟后跟0 09,a9,af,Af,AF F表示表示. . 如如0x123,0Xff0x123,0Xff例12与12L整型常量的类型整型常量的类型根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型在整常量后加限定词在整常量后加限定词l l或或L L、U U或或ULUL,认为它是,认为它是long int 型或无型或无符号整型、无符号长整型常量符号整型、无符号长整型常量问题:0123 = ( )100x123 = ( )100Xff = ( )1083291255问题:0123 = ( )100x123 = ( )100Xff = ( )10例:整型打印例:整型打印19C程序设计ch2数据描述&实型常量(实数或浮点数)实型常量(实数或浮点数)表示形式:表示形式:十进制数形式:(必须有小数点)十进制数形式:(必须有小数点) 如如0.123, .123, 0.123, .123, 123.0, 0.0, 123.123.0, 0.0, 123.指数形式:(指数形式:(e e或或E E之前必须有数字;指数必须为整数)之前必须有数字;指数必须为整数)如如12.312.3e3 ,123E2, 1.23e4 , e3 ,123E2, 1.23e4 , e-5e-5 , , 1.2E-3.51.2E-3.5 实型常量的类型实型常量的类型默认默认doubledouble型型 : 绝对值范围绝对值范围1.7e3081.7e308在实型常量后加字母在实型常量后加字母f f或或F F,认为它是,认为它是float float 型:绝对值范围型:绝对值范围3.4e383.4e38长双精度,后加长双精度,后加Lf: Lf: 绝对值范围绝对值范围1.2e49321.2e4932例:区别例:区别1.0e+7, e7, e+7, 1.2e-61.0e+7, e7, e+7, 1.2e-620C程序设计ch2数据描述&字符常量字符常量定义定义: :用用单引号单引号括起来的单个括起来的单个普通字符普通字符或或转义字符转义字符. 字符常量的字符常量的值值:该字符的:该字符的ASCIIASCII码值码值转义字符及其含义:转义字符及其含义:转义字符转义字符含义含义nvradddtbf”xhh转义字符转义字符含义含义换行换行垂直制表垂直制表回车回车响铃响铃单引号单引号3位位8进制数代表的字符进制数代表的字符水平制表水平制表退格退格换页换页反斜线反斜线双引号双引号2位位16进制数代表的字符进制数代表的字符如如 101 -A 012 -n 376 - x61 -a 60 -0 483 -( )例例:A-101-x41-65如如 A65 A65, a97 a97, 048 , n10 048 , n10如如 a A ? n 101转义字符转义字符: :反斜线后面跟一个字符或一个代码值表示反斜线后面跟一个字符或一个代码值表示例例 转义字符举例转义字符举例main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);运行结果:运行结果:(屏幕显示屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C例例 main() printf(“Yb=n”); 运行结果:运行结果:屏幕显示:屏幕显示:=打印机输出:打印机输出:21C程序设计ch2数据描述字符常量与字符串常量不同字符常量与字符串常量不同&字符串常量字符串常量定义:用双引号定义:用双引号(” ”)(” ”)括起来的字符序列括起来的字符序列存储:存储:每个字符串尾每个字符串尾自动自动加一个加一个 0 0 作为字作为字符串结束标志符串结束标志h e l l o 0例例 字符串字符串“hello”“hello”在内存中在内存中a a 0例例 a”a”例例: 空串空串 ” 空字符空字符0例例: char ch; ch=“A”; 22C程序设计ch2数据描述编译程序根据变量定义为其编译程序根据变量定义为其分配指定字节的内存单元分配指定字节的内存单元.地址地址int a=1, b=-3,c;abc2字节字节4字节字节2字节字节地址地址地址地址.内存内存(在在VC+中中)1-3随机数随机数3.2.3 变量变量概念:其值可以改变的量概念:其值可以改变的量变量名变量名与与变量值变量值变量定义的一般格式变量定义的一般格式 数据类型数据类型 变量变量1,变量,变量2,变量,变量n;变量初始化变量初始化:定义时赋初值定义时赋初值 例例: int a,b,c; float data;决定分配字节数决定分配字节数和数的表示范围和数的表示范围合法标识符合法标识符例例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;变量定义位置:变量定义位置:一般一般放在函数开头放在函数开头main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);变量定义变量定义可执行语句可执行语句main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);/*在在C中错误,在中错误,在C+中正确中正确*/例例2 float a,b,c; c=a%b; /*% : illegal, left operand has type float*/例例1 float x; x=5.0; 变量应先定义后使用:1、必须首先声明;2、参与运算前必须先赋值。23C程序设计ch2数据描述&整型变量整型变量占字节数随机器不同而不同占字节数随机器不同而不同, ,一般占一个机器字一般占一个机器字shortintlongshortintlong可用可用sizeofsizeof( (类型标识符)测量类型标识符)测量&实型变量实型变量floatfloat:占占4 4字节,提供字节,提供7 7位有效数字位有效数字doubledouble:占占8 8字节,提供字节,提供15151616位有效数字位有效数字&字符型变量字符型变量字符变量存放字符字符变量存放字符ASCIIASCII码码charchar与与intint数据间可进行算术运算数据间可进行算术运算例例 float a;a=111111.111; /* a=111111.1*/double b;b=111111.111; /* b=111111.111*/例例 a=D; /* a=68; */ a=D; /* a=68; */ x=A+5; /* x=65+5; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */ s=!+G /* s=33+71; */没有没有字符串变量字符串变量,用字符数组存放,用字符数组存放24C程序设计ch2数据描述例/*charoperation*/#definePRICE12.5#includestdio.hmain()intnum=3;floattotal;charch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1);宏定义变量定义输出结果运行结果:total=37.500000, ch1=d25C程序设计ch2数据描述&枚举类型枚举类型程序员自定义的一种数据类型程序员自定义的一种数据类型.1)先用先用enum定义一组枚举常量,及类型标识符定义一组枚举常量,及类型标识符:enum identifier value1, ., valueN;2)再定义该类型的变量再定义该类型的变量: enum identifier v1,v2, . , vm;例例enum weekday Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday; enum weekday week_st, week_end; week_st=Saturday; week_end=(enum weekday)4;例例enum weekday Monday=1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday;例例enum weekday Monday=1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday=0;26C程序设计ch2数据描述&用用typedef定义类型定义类型功能功能:用自定义名字为:用自定义名字为已有已有数据类型命名数据类型命名类型定义类型定义简单形式:简单形式: typedef type name;例例 typedef int INTEGER;类型定义语句关键字类型定义语句关键字已有数据类型名已有数据类型名用户定义的类型名用户定义的类型名例例 typedef float REAL;例例 INTEGER a,b,c; REAL f1,f2; int a,b,c; float f1,f2; 说明说明: :1.typedef 1.typedef 没有创造没有创造新数据类型新数据类型2.typedef 2.typedef 是定义类型是定义类型, ,不能定义变量不能定义变量新的类型名用法不变:新的类型名用法不变:27C程序设计ch2数据描述/*例Convertthegiventemperatureinfahrenheittocelsius.Theconversionformulais:C=(F-32)/1.8*/#includestdio.h#defineF_LOW0/*-*/#defineF_MAX250/*SYMBOLICCONSTANTS*/#defineSTEP25/*-*/main()typedeffloatREAL;/*TYPEDEFINITION*/REALfahrenheit,celsius;/*DECLARATION*/fahrenheit=F_LOW;/*INITIALIZATION*/printf(fahrenheitCelsiusnn);while(fahrenheit=F_MAX)celsius=(fahrenheit-32.0)/1.8;printf(%5.1f%7.2fn,fahrenheit,celsius);fahrenheit=fahrenheit+STEP;28C程序设计ch2数据描述2.3 运算符和表达式运算符和表达式C运算符算术运算符:+ - * / % 自增自减运算符:+ -关系运算符: = !=逻辑运算符:! & |位运算符 : | &赋值运算符:= 及其扩展条件运算符:?:逗号运算符:,指针、地址运算符:* &求字节数 :sizeof强制类型转换:(类型)成员、指向运算符:. -下标运算符:其它 :( ) -29C程序设计ch2数据描述算术运算符和表达式算术运算符和表达式基本算术运算符:基本算术运算符: + - * / %+ - * / %结合方向:从左向右结合方向:从左向右优先级:优先级: * / %* / % - - + -+ - (3) (4) (3) (4)说明:说明:所谓双目所谓双目单目三目单目三目运算符运算符两整数相除,结果为整数两整数相除,结果为整数% %要求两侧均为整型数据要求两侧均为整型数据例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2 =-2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 ()30C程序设计ch2数据描述关系运算符和表达式关系运算符和表达式关系运算符关系运算符种类种类: = !=结合方向:自左向右结合方向:自左向右优先级别:优先级别: = !=优先级优先级6优先级优先级7例例 ca+b /*c(a+b)*/ ca+b /*c(a+b)*/ ab!=c /*(ab)!=c*/ ab!=c /*(ab)!=c*/ a=bc /*a=(bc)*/ a=bc /*a=(bc /*a=(bc)*/ a=bc /*a=(bc)*/关系表达式的值:是逻辑值关系表达式的值:是逻辑值“真真”或或“假假”,用,用1和和0表表示示例例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/表达式值表达式值1/表达式值表达式值1/表达式值表达式值0/d=1/f=0注:注:C C语言中语言中, , 0 0表示表示“假假”,非,非0 0表示表示“真真”31C程序设计ch2数据描述关系运算注意:关系运算注意:例例 若若a=0; b=0.5; x=0.3; 则则 a=x278在在C中是允许的,中是允许的, 值为值为0例例 int i=1, j=7,a; a=i+(j%4!=0); 则则a=2例例 a0 结果为结果为 A100 结果为结果为1032C程序设计ch2数据描述关系运算注意:关系运算注意:例例 注意区分注意区分“=”与与“=”,常把常把=误写误写为为= int a; . if(a=1) printf(“a equal to b”); else printf(“a not equal to b”);例例 应避免对应避免对实数实数作相等或不等的判断作相等或不等的判断如如 1.0/3.0*3.0=1.0 结果为结果为可改写为:可改写为:fabs(1.0/3.0*3.0-1.0)1e-601=a延伸:延伸:用用 b+c=a不用不用a=b+c33C程序设计ch2数据描述赋值运算符和表达式赋值运算符和表达式简单赋值运算符简单赋值运算符符号:符号: = =格式:格式: 变量标识符变量标识符= =表达式表达式作用:将一个数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量复合赋值运算符复合赋值运算符种类种类:+= -= *= /= %=+= -= *= /= %= = &= = |= = &= = |=含义:含义: exp1 op= exp2exp1 op= exp2 exp1 = exp1 op exp2exp1 = exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例例 a=3; a=3; d=func(); d=func(); if(a=b) if(a=b)34C程序设计ch2数据描述结合方向:结合方向:自右向左自右向左优先级优先级: 14左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式赋值转换赋值转换规则规则: :使赋值号右边表达式值使赋值号右边表达式值自动自动转换成其左转换成其左边变量的类型边变量的类型赋值表达式的值与变量值相等赋值表达式的值与变量值相等,且可嵌套且可嵌套例例 3=x-2*y;3=x-2*y; a+b=3; a+b=3;例例 float f; int i; i=10; f=i;则则 f=10.0例例 int i; i=2.56; /结果结果i=2;例例: a=b=c=5: a=b=c=5 a=(b=5) a=(b=5) a=5+(c=6) a=5+(c=6) a=(b=4)+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) a=(b=10)/(c=2)/表达式值为5,a,b,c值为5/ b=5;a=5/表达式值11,c=6,a=11/表达式值10,a=10,b=4,c=6/表达式值5,a=5,b=10,c=2例例: a=12; : a=12; a+=a-=a*a a+=a-=a*a/a=-264 等价于a=a+(a=a-(a*a)例例: int a=2; : int a=2; a%=4-1; a%=4-1; a+=a*=a-=a*=3; a+=a*=a-=a*=3; /a=0 等价于a=a+(a=a*(a=a-(a=a*3)/a=2 等价于a=a%(4-1)35C程序设计ch2数据描述ab!a!ba&ba|b真真假假真真假假假假假假真真真真逻辑运算符和表达式逻辑运算符和表达式逻辑运算符逻辑运算符种类:种类: ! & |逻辑运算真值表逻辑运算真值表C C语言中语言中, ,运算量运算量: : 0 0表示表示“假假”, 非非0 0表示表示“真真”,”, 运算结果运算结果: : “ “假假” ” 0 0 “ “真真” ” 1 1真真假假假假假假假假假假真真真真假假假假真真真真真真假假真真真真36C程序设计ch2数据描述! (2)& (11)| (12)高高低低例例 a=x & xb&xy a=b|x=y !a|abl优先级:优先级:l结合方向:结合方向:! :从右向左从右向左& :从左向右从左向右| :从左向右从左向右/ (a=x) & (xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)37C程序设计ch2数据描述! (2)& (11)| (12)高高低低l优先级:优先级:l结合方向:结合方向:! :从右向左从右向左& :从左向右从左向右| :从左向右从左向右例例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|83)&2|(8(4-(!0) 值为值为138C程序设计ch2数据描述! (2)& (11)| (12)高高低低l优先级:优先级:l结合方向:结合方向:! :从右向左从右向左& :从左向右从左向右| :从左向右从左向右短路特性短路特性:逻辑表达式求解时,并非所有的逻辑运算:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符求出表达式的解时,才执行该运算符例例 a&b&c /只在只在a为真时,才判别为真时,才判别b的值;的值; 只在只在a、b都为真时,才判别都为真时,才判别 c的值的值例例 a|b|c /只在只在a为假时,才判别为假时,才判别b的值;的值; 只在只在a、b都为假时,才判别都为假时,才判别 c的值的值例例 a=1;b=2;c=3;d=4;m=1;n=1; (m=ab)&(n=cd)/结果结果m=0,n=139C程序设计ch2数据描述自增、自减运算符自增、自减运算符+作用:使变量值加作用:使变量值加1 1或减或减1 1种类:种类:前置前置 +i, -i (+i, -i (先执行先执行i i+1+1或或i-1i-1,再使用再使用i i值)值)后置后置 i+,i- (i+,i- (先使用先使用i i值值, ,再执行再执行i i+1+1或或i-1i-1)例例 j=3; k=+j; j=3; k=+j; j=3; k=j+; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=4,j=4/k=3,j=4/k=3,j=4/4/4/3/3/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=440C程序设计ch2数据描述例 -i+ i=3; printf(“%d”,-i+); 例 -i+ -(i+) i=3; printf(“%d”,-i+); /-3 + - + - 不能用于常量和表达式不能用于常量和表达式, ,如如5+5+,( (a+b)+a+b)+ -+ -结合方向:结合方向: 自右向左自右向左优先级:优先级:- + - -* / % -+ - + - -* / % -+ - (2) (3) (4)(2) (3) (4)例 j+k; (j+)+k;/参考P59-(2)41C程序设计ch2数据描述2.4不同类型数据间的转换不同类型数据间的转换隐式转换隐式转换什么情况下发生什么情况下发生运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换运算转换规则运算转换规则: :不同类型数据运算时先不同类型数据运算时先自动自动转换转换成同一类型成同一类型42C程序设计ch2数据描述doublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a+i*f-d/l例inti;floatf;doubled;longl;43C程序设计ch2数据描述显式转换(强制转换) 一般形式:(类型名)(表达式)例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 例main()floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);结果:x=3.600000,i=3较高类型向较低类型转换时可能发生精度损失问题强制转换得到所需类型的中间变量,原变量类型不变44C程序设计ch2数据描述运算符总结表优先级函数、下标:().-自增等:正负+-!*&sizeof(类型)乘除模:*/%加减:+-位:关系:=关系:=!=位:&位:位:|逻辑:&逻辑:|条件:?:赋值:=+=-=*=/=%=&=|=逗号:,左结合性右结合性左结合性左结合性左结合性左结合性左结合性左结合性左结合性左结合性左结合性左结合性右结合性右结合性左结合性45C程序设计ch2数据描述学习运算符应注意学习运算符应注意运算符功能运算符功能与运算量关系与运算量关系要求运算量个数要求运算量个数要求运算量类型要求运算量类型运算符优先级别运算符优先级别结合方向结合方向结果的类型结果的类型46C程序设计ch2数据描述例computermanufacturingcompanyhasthefollowingmonthlycompensationpolicytotheirsales-persons:Minimumbasesalary:1500.00Bonusforeverycomputersold:200.00Commissiononthetotalmonthlysales:2percentGrosssalary=basesalary+(quantity*bonusrate)+(quantity*price)*commissionrate;Thenecessaryinputsare,thepriceofeachcomputerandthenumbersoldduringthemonth.47C程序设计ch2数据描述/*.Rootsofquadraticequation*/#include#includestdio.hmain()floata,b,c,discriminant,root1,root2;printf(Inputvaluesofa,b,andcn);scanf(%f%f%f,&a,&b,&c);discriminant=b*b-4*a*c;if(discriminant0)printf(nnROOTSAREIMAGINARYn);elseroot1=(-b+sqrt(discriminant)/(2.0*a);root2=(-b-sqrt(discriminant)/(2.0*a);printf(nnRoot1=%5.2fnRoot2=%5.2fn,root1,root2);输入:a=1,b=3,c=2输出:x1=-1.00x2=-2.00例 求的根。设48C程序设计ch2数据描述实验一:题目:题目:C程序的运行环境和运行程序的运行环境和运行C程序的方法。程序的方法。目的:目的:内容:内容:1、熟悉、熟悉Turbo C /Visual C 6.0的集成开发环境。的集成开发环境。练习练习C程序的基本结构。程序的基本结构。2、练习如何在、练习如何在TC/VC上编辑、编译、连接和运行上编辑、编译、连接和运行一个一个C程序。程序。步骤:(编程实现求三个数的最小值)步骤:(编程实现求三个数的最小值)49C程序设计ch2数据描述作业二:1、查找以下定义语句的错误并改正:intx;floatletter,DIGIT;double=p,q;exponentalpha,beta;m,n,z:INTEGER;shortcharc;longintm;count;longfloattemp;50C程序设计ch2数据描述2、查找语法错误,并改正,写出改正后的程序运行结果:#definePI3.14159main()intR,C;floatarea;floatperimeter;C=PIR=5;Perimeter=2.0*C*R;Area=C*R*R;printf(%f,%d,&perimeter,&area); 51C程序设计ch2数据描述3、以下哪些算术表达式是合法的?合法的写出表达式之值,不合法的说明理由:25/3%2-14%3+9/4+515.25+-5.07.5%3(5/3)*3+5%314%3+7%221%(int)4.5 52C程序设计ch2数据描述
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号