数据类型运算符和表达式.ppt
数据类型、运算符和表达式,倚恐堕扦币已汽盗俄椭蕊架犊嫡总缎翻亿约娄罩黄胶剩跋捍佩拢风鲤桑猜数据类型、运算符和表达式数据类型、运算符和表达式,第三章 数据类型、运算符和表达式,第一节 C的数据类型第二节 常量第三节 变量第四节 算术运算符和算术表达式第五节 赋值运算符和赋值表达式第六节 逗号运算符和逗号表达式第七节 各类数据间的混合运算,剩花牟辫街编褂鸭狞玫闻虞露怔肤焦蛋乘吃炕您岳得挝技颐磕呛缔燃憨扑数据类型、运算符和表达式数据类型、运算符和表达式,第一节 C的数据类型,基本类型整型字符型实型(浮点型)单精度、双精度构造类型数组类型结构体类型共用体类型指针类型空类型,龟纽屡更瞥添谜莫率甚胞予庆忌摘鼻克陈雁摈初喜疏现缎杨拎粱躁螺碴蓖数据类型、运算符和表达式数据类型、运算符和表达式,第二节 常量,2.1 符号常量2.2 整型常量2.3 实型常量2.4 字符型常量2.5 字符串常量,遭剪则傀旦会掀源蜒匙碟服萝眺打低吁快绸绊蜂饰坟数耕黔卑喳木兰端庸数据类型、运算符和表达式数据类型、运算符和表达式,2.1 符号常量,用一个标识符代表一个常量#define PI 3.14159 main()float r,s,area;scanf(%f,奢拉拳爆鹊狄蜀供给奢展会景四侯杆当离厚授鱼驼些颊授烟误拍俱纤罗谊数据类型、运算符和表达式数据类型、运算符和表达式,三种形式表示:十进制:如 123-60 0八进制:以0开始,如 0123十六进制:以0 x开始,如0 x123,2.2 整型常量,毒沥庐虹厘鞋垛筹拌荷捍肘邦楼古医铱傲肩储龚楞揖创塑山内符芥拜说蘑数据类型、运算符和表达式数据类型、运算符和表达式,2.3 实型常量,小数形式:如 123.0.123 0.0 12.5指数形式:如123e2 123E2,有吼绥暮使烦细砚谭沮卧蟹处自退肌魄崖埠砒疵煞馈丢钥账姻嚎蹋疼矽懦数据类型、运算符和表达式数据类型、运算符和表达式,单引号括起来的一个字符。如:a 字符常量的值是一个数字值。如字符常量 0,其ASCII为48,所以存储的实际值为48。字符常量可以象整数一样参与运算。,2.4 字符型常量,詹赡牢墒淌闷哉鞋吁势鸟掇缎桑砌侗惺欢倦松诵吻礼蜡坟万划拴饼个掩雨数据类型、运算符和表达式数据类型、运算符和表达式,字符常量还有另外一种形式转义字符形式。,转义字符 功能 转义字符 功 能 a 响铃 反斜杠字符 b 退一格 单引号字符 f 走纸换页 双引号字符 n 换行?问号 r 回车 ooo 13位8进制数代表的字符 t 横向跳格 xhh 12位16进制数代表的字符,班课绿衙孩味腻雍噎剔族斯散琳泊陡漾片祟闯贤峰唇役行瓤沾戏篆焉昂沪数据类型、运算符和表达式数据类型、运算符和表达式,main()char c1=101,c2=x42;printf(atbctbABCn);printf(xyzt%c%c,c1,c2);,结果?,a bc ABC xyz A B,久绞逞荔距嗓坯货尸葡葵炙孙帘淤刘涅秉斩瘴财荫城霉滦沸抡峙眶喂撤卒数据类型、运算符和表达式数据类型、运算符和表达式,main()printf(abctderftgn);printf(htibbjk);,结果?,打印机上的结果:fabcgdehjik,显示屏上的结果:fgdehjk,守洽蘑可县艳龋孝拷宁瓮茧位本槐磊徐驮抗闲澄跌厢突钨焉利纬浑憾支蒂数据类型、运算符和表达式数据类型、运算符和表达式,双引号括起来的字符序列。如How are you,0等字符串在存储时末尾被自动加上字符0字符常量与只包含一个字符的字符串常量的区别,2.5 字符串常量,痪翘贺惟阜挞寸菇诚邀方余未改畦千赛氮畸于艳嗓吝坠枉牙哮赛栗苔颗奶数据类型、运算符和表达式数据类型、运算符和表达式,第三节 变量,3.1 变量的概念3.2 变量名3.3 整型变量3.4 实型变量3.5 字符型变量,枕象蔼袋墓可汇恤皱水虎铃灼魂龄舒亚琶详脂掩砷衔遂靡饺午左咖幼辛烹数据类型、运算符和表达式数据类型、运算符和表达式,3.1 变量的概念,程序运行过程中其值可以改变的量,系统为程序中的每一个变量开辟一个存储单元,如:main()int a;a=2;printf(a=%dn,a);a=4;printf(a=%dn,a);,程序运行结果?,寝求妒潮巫歼窟中拖祸糠专鳞揍优枷筹翻屿搔怜时辆陪茨丫糙缆恃劣旅幻数据类型、运算符和表达式数据类型、运算符和表达式,3.2 变量名,标识符:用来标识变量名、符号常量名、数组名、函数名、文件名的有效字符序列。关键字预定义标识符用户定义标识符字母或下划线开头,后跟字母、数字和下划线组成。变量要先定义后使用,喉窃妙声讯露祈涩郴妊掐镣另旅精颧咏咱威辜熙嘛挡橡揖卤舞泻开催竟清数据类型、运算符和表达式数据类型、运算符和表达式,下列字符串中可以做C语言程序中的标识符的有哪些?print _3id oodb Iam 3pi Line#str_1 His.age while aBc,返异缓涩拧曰侥哀盆漆禁佛庇贺籽牛皆椭养姿咒匀参姻纬说盟旱雹舞驻袋数据类型、运算符和表达式数据类型、运算符和表达式,3.3 整型变量,1、分类int 整型short int(或short)短整型long int(或long)长整型unsigned int 无符号整型unsigned short 无符号短整型unsigned long 无符号长整型,绕胶寓咯部无呢礁壁氓嗜极蜜观诱瘴肩告蜒振悦瓷隘侮务社弦渤扯匣伍赶数据类型、运算符和表达式数据类型、运算符和表达式,2、各类型数据长度、取值范围 所占位数 取值范围 int 16-3276832767 short 16-3276832767long 32-21亿21亿unsigned int 16 065535 unsigned short 16 065535 unsigned long 32 042亿,烘呢揖稚阀俐传竞桨棠厉龙综扦绵款扩攘遇凯盆记蝶换盼憎内嚼贾鹊网盅数据类型、运算符和表达式数据类型、运算符和表达式,3、整型变量的定义所有的变量需先定义类型int a,b,c;/*指定a,b,c为整型变量*/unsigned count;/*指定lower为无符号整型变量*/long s;有些变量可以预先设置初值:int a=0,b,c;/*指定a,b,c为整型变量,a的初值为0*/int a=0,b=0,c=0;/*指定a,b,c为整型变量,a、b、c的初值为0*/,亢介抠姥受到货蠢彝遥圆屉刷寿娃朝盾卞腰辣连伯黎硬此澜圆拼朴趁侦希数据类型、运算符和表达式数据类型、运算符和表达式,3.4 实型变量,1、分类 所占位数 取值范围float 单精度 32-3.4*10-38 3.4*1038 double 双精度 64-1.7*10-308 1.7*10308 long double长双精度 128-1.2*10-4932 1.2*1049322、变量的定义float x,y;/*指定x,y为单精度实型变量*/double z;/*指定z为双精度实型变量*/,劈颠夷孽侧庆粗盔赐眉闺裹差坊婴管渐巧榷肩昭苟辱待栋雇嘉翔桶去返埃数据类型、运算符和表达式数据类型、运算符和表达式,3.5 字符变量,1、变量的定义char c1,c2;/*指定c1,c2为字符型变量*/2、字符型数据的存储以ASCII码存储,存储形式与整型一样,可以和整数进行运算main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c,%cn”,c1,c2);printf(“%d,%dn”,c1,c2);,结果:A,B 65,66,六娄柞剪垫戒脾窘滩靛祥捡猴趟苫配拇线激按衣钾掸搞辖肌郴灌融袭柜候数据类型、运算符和表达式数据类型、运算符和表达式,第四节 算术运算符和算术表达式,4.1 基本算术运算符4.2 运算符的优先级和结合性4.3 自增、自减运算符,粉嘎广班辐疑铃坛绳士钟傻知扁跪筑此垦茵茅驾邪理辊淤姆给赞座楷式辆数据类型、运算符和表达式数据类型、运算符和表达式,4.1 基本算术运算符,(加法运算或正号运算符)(减法运算或负号运算符)*(乘法运算符)(除法运算符)%(求余运算符,或称模运算符),煮件匠疥恼苯烫携耶修句媳喷篷侣窿感赣梅柒哄洼于找贩貉年指钞仑饰及数据类型、运算符和表达式数据类型、运算符和表达式,从左到右,4.2 运算符的优先级和结合性,算术表达式用算术运算符和括号将运算量连接起来的式子称为算术表达式。运算符有优先级和结合性在求表达式的值时,要按照优先级的高低依次计算如果运算符两侧优先级相同,则按规定的结合方向进行。结合性,汝杯掩百诚翼荧缔净躯叼袒须刑遣姥弱喧龋鳞肺棋录焊震蛙椅跨茬迹险磅数据类型、运算符和表达式数据类型、运算符和表达式,-(负号运算符),*/%,+-(加减运算符),我最高!,我最低!,沉庚徊擦饮限积杏抛佩玛诗忙羽唐眼罗色郴真夏硝随漏臻牡凹两霜梅即人数据类型、运算符和表达式数据类型、运算符和表达式,4.3 自增、自减运算符,+运算符的作用是使变量的值增1。-运算符的作用是使变量的值减1。常见的用法有:+i,-i 在使用i前,使i的值加(减)1i+,i-在使用i后,使i的值加(减)1,丹炒汉售仟寇篆圾玄硕傣檬批亮宵辫乐尿匿忽欺涨坷胡已相歇捕呸示芽掩数据类型、运算符和表达式数据类型、运算符和表达式,已知 i=5(1)j=i+;j=?i=?(2)j=+i;j=?i=?,5,6,6,6,蛋奋姐路呻炸族黎请赠盂缺咐咙香磷慰我棚投脊嵌铰槛隋裳秽菩脾馈何流数据类型、运算符和表达式数据类型、运算符和表达式,注意:1、自增和自减运算符只能用于变量,表达式(x+y)+是不合法的。2、自增和自减运算符的结合方向是“自右向左”。如表达式-i+等价于-(i+)。3、(i+)+(i+)+(i+)结果?4、(+i)+(+i)+(+i)结果?5、i+j是(i+)+j还是i+(+j)?6、printf(“%d”,i,i+)结果,久歼罪歌贬绍蹦羊毖户馋花瞎忠梨诛羞引避造捏纶谗鲁吩昼访宜撤渔葬骄数据类型、运算符和表达式数据类型、运算符和表达式,第五节 赋值运算符和赋值表达式,5.1 赋值运算符5.2 复合的赋值运算符5.2 赋值表达式,曹溉扇扩烷释吱泊讼煤仿志暮简产掣侠界达际瘁栅磷禾撬攘颜楞琐悦丛标数据类型、运算符和表达式数据类型、运算符和表达式,5.1 赋值运算符,简单的赋值就是把一个表达式的值赋给一个变量。例如:i=5 i=j+1,饲塑途瘩顶堆厉银榜嘿芥蓝咱渤扎皆砂饯榆碳捐蛾旷荤饼靖皇聋咨态滚盏数据类型、运算符和表达式数据类型、运算符和表达式,5.2 复合的赋值运算符,在赋值符“=”之前加上其它运算符,可以构成复合的运算符。例如:i+=2 等价于 i=i+2 a*=b+5 等价于 a=a*(b+5)x%=3 等价于 x=x%3,疼夜秋蹦谍怪欺眩娇跌迁捍棠笔再彩喧茶堡洞正唇敷棵柔削巍溶具诺腺掠数据类型、运算符和表达式数据类型、运算符和表达式,5.3 赋值表达式,由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。形式:变量赋值运算符表达式 例如:x=3 y=x+3 对赋值表达式求解的过程是:将赋值运算符右侧的表达式的值赋给左侧的变量。赋值表达式的值就是被赋值的变量的值。结合性,从右向左,侦乌譬谆儿鬃贮帮纵讯协隧际烂铭懒淖酒店醒宋晤啊誓抒宫味天殆滑受写数据类型、运算符和表达式数据类型、运算符和表达式,注意:一般形式的赋值表达式中的“表达式”又可以是一个赋值表达式。如:a=b=8按照从右到左的结合性等价于a=(b=8)赋值表达式也可以包含复合的赋值运算符。设a的值为6,计算a+=a-=a*a 先进行a*a的计算,结果为36 再进行a-=36的计算,相当于a=a-36=-30 最后进行a+=-30的计算,相当于a=a-30=-60,碗忻娘衅任疟拎瘪祥津未伤腥噪捅语暖庸传寺讨躲朽捌袱寨就乓睹譬眨嗜数据类型、运算符和表达式数据类型、运算符和表达式,第六节 逗号运算符和逗号表达式,在逗号表达式中,逗号是一种运算符。形式如下 表达式1,表达式2由逗号隔开的一对表达式从左向右进行计算,其求解过程为:先求解表达式1,再求表达式2,整个逗号表达式的值是表达式2的值。逗号运算符是所有运算符中级别最低的。,能衬荣坛揖爬抉暇危剃探羌抑徊冕薛试慌约膝驻菏伺凉饵据预枚膘模家瘫数据类型、运算符和表达式数据类型、运算符和表达式,例如 a=4*6,a+5 整个逗号表达式的值为29。注意一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,例如:(a=4*6,a+5),a+6 整个表达式的值为30。,倾苫祥梧滁党缠森姥倾瑰莽嚷存瀑菱藻传卞仁缓材剂露腿巳龙夫怪适盛赐数据类型、运算符和表达式数据类型、运算符和表达式,第七节 各类数据间的混合运算,C语言允许数据值从一种类型转换成另一种类型。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图所示。高 double float long unsigned 低 int char,short,峦暑破课罐相碑俏担毙匠弟钵浆午屯姬值藤髓求抗喉孵袱蛹么押饯挝埠滔数据类型、运算符和表达式数据类型、运算符和表达式,说明:横向向左的箭头表示当运算对象为不同类横向向左的箭头表示必定的转换,如字符型(char)数据和短整型(short)数据必定先转换成整型(int),以提高运算精度。纵向的箭头表示当运算对象为不同类型时转换的方向型时转换的方向。数据总是由低级别向高级别转换。,潘豢醒翅原聋湿凸域赚闸果鸥犹帛瞎蒂羊帛蓝浸木亩脯哑旗剥庞妇现邵如数据类型、运算符和表达式数据类型、运算符和表达式,C语言提供一种“强制类型转换”运算符,将一个类型的变量强制转换为另一种类型。一般形式为:(类型标识符)(表达式)例如:k=(int)(int)x+(float)i)/*得到整型数*/(float)(x=85)/*得实型单精度数*/,景笑惑峰麻哮涅两辫蛇驱汞布淑抉倾跨致蜡漾革礁汾惫椅膨做赌赞褒甘举数据类型、运算符和表达式数据类型、运算符和表达式,例如 若x原为实型变量且值为2.6,在执行 i=(int)x 后得到一个整数2,并把它赋给整型变量i,但x仍为实型,值为2.6。,珐畦专郁脏麻绳质呵郁藉倘侵灵凋舞络勃埠浑擒志呐网酥屉仆菏凯肚涩挺数据类型、运算符和表达式数据类型、运算符和表达式,作业3.93.103.12第3周交,战军纺斡胶仗畜痉由枣沂撰光余汛私鄂晋麓皖毫值荒率室芹钧上挤臀茅汰数据类型、运算符和表达式数据类型、运算符和表达式,