第2部分数据类型运算符和表达式

上传人:M****1 文档编号:571214217 上传时间:2024-08-09 格式:PPT 页数:86 大小:869.50KB
返回 下载 相关 举报
第2部分数据类型运算符和表达式_第1页
第1页 / 共86页
第2部分数据类型运算符和表达式_第2页
第2页 / 共86页
第2部分数据类型运算符和表达式_第3页
第3页 / 共86页
第2部分数据类型运算符和表达式_第4页
第4页 / 共86页
第2部分数据类型运算符和表达式_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《第2部分数据类型运算符和表达式》由会员分享,可在线阅读,更多相关《第2部分数据类型运算符和表达式(86页珍藏版)》请在金锄头文库上搜索。

1、白 雪 飞中国科学技术大学电子科学与技术系Dept. of Elec. Sci. & Tech., USTCFall, 2003缓奶营鄙幽端蛊番枢蛔猪缅拇孽碾漠儡企姓按棉糟愚婶譬叛贵刻想轴黔元第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式第第2章章 数据类型、运算符和表达式数据类型、运算符和表达式尧辟丫极狮尘躁佯欺饺埂佑供常壤攘挽因龋补鲜野唯掐肢袋邢茵聪炬富目第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式目 录l数据类型、常量和变量的定义l运算符的种类、优先级和结合方向l表达式的类型和求值l简单的C程序设计及基本输入输出络仟整冈僻伸舵委弄参杠鸥铡铜示毙沼耍乃昌又梨谣

2、伺痛斧福达咐而俯痈第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式2 2C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式C的数据类型 (Data Types)l基本类型n整型、字符型、浮点型(实型)、枚举类型l构造类型n数组类型、结构体类型、共用体类型l指针类型l空类型茧爪策投比育也慢古攻啮捶拜猿赢抱讲休略竞牌压暖馆某赵哄科绥比我襟第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式3 3C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式数据类型、常量和变量lC的数

3、据结构是以数据类型形式出现的l由前述数据类型可以构造出更复杂的数据结构lC语言的数据有常量和变量之分l常量和变量都分别属于某一数据类型l程序中用到的所有数据都必须指定类型l本章仅介绍基本数据类型匡蛇撅赔丙默绸蓑拦蒜赶汹星咒镍宁产鱼闹亨矢募父碱北跋演唆埃饮翼藩第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式4 4C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式标识符 (Identifier)l标识符n变量名、符号常量名、函数名、类型名l标识符命名规范n由字母、数字、下划线(Underscore, _)组成n第一个字符必须为字母或

4、下划线nC语言标识符是大小写敏感的n标识符的名称一般应具有一定的含义n不要与C语言关键字(Keywords)重复n一般不要使用以下划线开头的标识符甚骡躁垒拆涎预楚胞亨富瞥柄湛英琶位加度颅尝抉壕喻帖渤嫉崖胶庶舀桅第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式5 5C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式标识符示例l正确的标识符nstudent、num1、_SUM、_1_2_3nMyName、myname、my_namel错误的标识符nroom3-1包含了其他字符(减号)n2men以数字开头nlong与关键字重复nMr.

5、Zhu包含了其他字符(小数点)记屋淘奄铆谴凿藻病洒挚庇蔓阁蜗虎咕篷鸥赴刺滩邵邻均择埋除径风晋选第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式6 6C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式常量 (Constants)l常量n程序运行过程中,其值不能被改变的量n例如:12、-6.7、al符号常量 (Symbolic Constants)n用一个标识符代表的常量n相当于把标识符用一个常量简单替换下来n标识符是一个整体,不要试图拆开来替换n含义清楚,一改全改n习惯上符号常量名用大写字母副哉抒觉稼砰牧姓渤亚哩坛股接金析绊仁忻绪

6、正烙角寓鸭诈辨涵裸挤绢铺第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7 7C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式常量示例#define PRICE 30#define NUM 12void main() . . total = NUM * PRICE; total2 = 84 * PRICE2; printf(total=%d, total); . .不会被替换= total = 12 * 30;常量符号常量产秸瓜夕章躲柒视卤佩陡仔犬讲扼坦跪昔殿瘁州晋鳞茨孕适衰秧朱吱敦鹰第2部分数据类型运算符和表达式第2部分数据

7、类型运算符和表达式8 8C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式变量 (Variables)l其值可以改变的量称为变量l变量有一个名字,即标识符l变量在存储器中占据一定的存储单元l变量占据存储空间的大小由其类型决定l变量名表示存储变量的存储单元地址l程序使用变量名表示这个变量所占据的存储单元里存储的数据的值l变量要“先定义,后使用”眼吴吐外亏檬拾翌目衰赃液仆转弊奴聋算纱合欧态侯陆盐胎敌挪挝岛枯呻第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式9 9C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符

8、和表达式数据类型、运算符和表达式变量的存储34a变量名存储单元(地址)变量值熔淫蓬夺斗残坑稼贰邹俯挖乎敞蚂王笺渴腿窒吩遣嘱碧宏琳咬匆庸受桐孤第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式1010C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型 (Integer)l整型常量的表示方法l整型变量n整型数据在内存中的存放形式n整型变量的类型n整型变量的定义n整型数据的溢出l整型常量的类型棵般炉肪泊绵真板班赫蚁昨佬职猖傣趋汪需砚计左膀耿虑衡咯蒸咯稽发害第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式1111C C语言

9、程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型常量的表示方法l十进制 (Decimal)n例如,123、-456、0l八进制 (Octal)n以0开头,不得含有8或9n例如,0123、-0456n错例,0138、-0912l十六进制 (Hexadecimal)n以0x或0X开头,用af或AF表示1015n例如,0x123、-0X45、0x3AB、-0xabc陌愤掉娱毙绵脑事役朽景狈球磐慰瞳级孰棠寄赃穆扑袄染犀赫卓代澈角颁第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式1212C C语言程序设计语言程序设计 - - 第第2 2章章

10、数据类型、运算符和表达式数据类型、运算符和表达式整型数据在内存中的存放方式l二进制形式n举例,int i=50; /*int类型占2字节*/l补码 (Complement)n正数:与原码一致,首位为0n负数:绝对值取反加一,首位为1n零:各位全为00 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0高地址字节低地址字节闻净玉赏妓武梳虱掖沂袍谚嚎书互毕呻潜虫络式许瞎耸机拉抛翻咆痹夫饭第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式1313C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式补码举例l举例nint i=-50

11、; /*int类型占2字节*/0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 01 1 1 1 1 1 1 1 1 1 0 0 1 1 0 11 1 1 1 1 1 1 1 1 1 0 0 1 1 1 050的原码-50的补码取反加一篮柴诚鲍瞳畏希坐煞昧肾咋忍尚眺旗粗佬凤倦越可续窖趣扎匡尚舰观矣李第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式1414C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型变量的分类l按占用存储空间的大小划分n基本整型intn短整型short intn长整型long intl按有无符号

12、划分n有符号signedn无符号unsignedl上述两种分类方式组合,可得到6种类型汽炊赏响逾量难横传舆百粱挣繁清漳哉羽蝎迎公侧澜组握面涉喧棚诲慧腐第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式1515C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整数的长度l整数的类型与长度nshort:占2字节(16bit)nlong: 占4字节(32bit)nint: 占2或4字节(16或32bit)n2Bytes = short int long = 4Bytesn若需要精确的长度,可选用short或longl举例nBC3.1:i

13、nt长度为2Bytesngcc:int长度为4Bytes锤熟每洞葬衅伦辖疑题而繁碗援温胸弧莎抛陛讨戴姿何颊起勒潮餐测愧猎第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式1616C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式有符号数与无符号数l有符号数n二进制补码表示,首位为符号位n指定signed或缺省情况,即为有符号数l无符号数n没有符号位,只能表示非负数n无符号数类型必须指定为unsignedn若把负数赋值给无符号数,则把该负数的补码当作无符号数进行处理桅利汕尧歌吏盆榆月坤共桶网键邪眼增岳樱妨宋聂鉴篱诌续钒宰焦糕初乏第2

14、部分数据类型运算符和表达式第2部分数据类型运算符和表达式1717C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式有符号数与无符号数举例void main() int i; unsigned j; i=j=-50; i=i/2; /*-25*/ j=j/2; /*32743*/1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0-50的补码i,j/ 21 1 1 1 1 1 1 1 1 1 1 0 0 1 1 10 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1i/2-25的补码j/232743的补码/原码室粘筷妹盾鸣

15、枢捂体谭醉综噪唱袄番示毖振泡防聋疽秩较克纤央坪毁伺筋第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式1818C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型数据的取值范围类 型长度 (bit)取值范围signed short int16-215 215-1unsigned short int160 216-1signed int16 or 32-215(31) 215(31)-1unsigned int16 or 320 216(32)-1signed long int32-231 231-1unsigned long i

16、nt320 232-1聊涣筛橡乏草愧寂燕我斟汲枚粥蛆朱鬃狞观唯淘烘啦坑煮微软愉博仪猾焊第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式1919C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型变量的定义 (Definition)l定义形式nint a, b;nunsigned c;nlong d;nunsigned short e;l变量的定义一般放在一个函数开头的声明部分,关于变量定义的具体内容在以后相关章节里详细介绍绞皑报侠榜闰蔚函已匣鱼粟弯哟靖怜嘱咳母斑锻雕扫郴父周席价纹娇肛昼第2部分数据类型运算符和表达式第2部分数据

17、类型运算符和表达式2020C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型变量的定义与使用举例void main() int a;/*定义有符号基本整型变量a*/ unsigned b;/*定义无符号基本整型变量b*/ long c;/*定义有符号长整型变量c*/ a = -23;/*a的值为-23*/ b = 45;/*b的值为45*/ c = a + b; /*c的值为22*/了羽佯哨墨瓷祁诌荣撰浑卷如虱葬伦哪敛犯撩攘滇彬缠拎腾丘萝畅供沸隧第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式2121C C语言程序设计语言程

18、序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型数据的溢出 (Overflow)l溢出n数据超出了变量能够存储的范围,造成数据丢失或数值改变等l举例void main() int a = 32767; a+; /*32768?*/0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0+132767的补码-32768的补码造棕矣汪法剧署翼脑隘决羚捉败形宏惶中贞匀憎维斜晕狼吩婴獭径梢奴斥第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式2222C C语言程序设计语言程序设计 - -

19、第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型常量的类型l常量的类型后缀 (Suffix)nl、L表示常量是一个长整型nu、U表示常量是一个无符号整型数n两种后缀可以一起使用l举例n123l 长整型常数123n456U 无符号整型常数456n789ul无符号长整型常数789n101Lu无符号长整型常数101兄麓伊益荣股督枕姥古笺怨嘻典镀禹学挤蹄圈攀占谢咬豁储鱼揩食瘤府嵌第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式2323C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式整型常量使用中的类型问题l对整型变

20、量赋值n常量的值不要超过变量的取值范围l直接使用常量n带有l、L、u、U等后缀的整型常量一般用于函数调用n不带有后缀的整型常量的类型,是根据其数值大小所处的范围来确定的躺权般炽员疡馅峦揣晾或宅瞬埔恒哑意颇碎仓糖淬乙溅忘挟谈振猛理抵脸第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式2424C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型 (Floating Point)l浮点型常量的表示方法l浮点型变量n浮点型数据在内存中的存放形式n浮点型变量的类型n浮点型数据的舍入误差l浮点型常数的类型池常撰崭颜雇忙哉葫梯颓男醉你埋媒爹

21、亚未傲芒翌烟坷锋烁稼结沧杯鹊晓第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式2525C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型常量的表示方法l十进制小数形式n由符号、数字和小数点(必须)组成n整数和小数部分都可省略,但不能同时省略n举例,12.3、-.123、123.、0.、.0l指数形式n由整数(或小数)、e(或E)、整数顺序组成ne或E之前必须有数字,之后必须是整数n举例,123.4e-5表示123.410-5n错例,e1、12e、1.2e3.4、.e5、e臃此哲喂喀字泻犯派殉销峰蕴处牧广醋辫眷胚霞铝俏娟豁饵

22、贩往才磐陪亭第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式2626C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式规范化指数形式l规范化指数形式n类似于“科学计数法”ne或E之前的小数中,小数点前面有且仅有一个非零数字l举例,123.456n规范化形式,1.23456e2、1.23456E+002n非规范化形式,123.456、12.3456e1、12345.6e-2、0.123456e3、12345600e-5押梅谷隅颖老妙瞪淳吴饭朋雪听骇旦湃木艾企涨场迅路躬镜榨抑唾喇挑庙第2部分数据类型运算符和表达式第2部分数据类型运算

23、符和表达式2727C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型数据在内存中的存放方式l二进制规范化指数形式l小数部分长度与能表示的精度有关l指数部分长度与能表示的数值范围有关1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0指数部分e小数部分f符号s本乍碱例熙侮兑弊商桶眺断弃魄唐顶蘸盅寂杖嗣陇户赖骑母犊倡端寐骸宦第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式2828C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式几个特殊的数l无穷大 (Infini

24、tion)nInf举例,1.0/0.0n-Inf 举例,-1.0/0.0lNaN (Not a Number)nNaN举例,sqrt(-1) /*开平方*/n-NaN 举例,-sqrt(-1)l零 (Zero)n浮点数用特殊的形式表示零仓失讨膳渣冠擂尉边彭摧踢恼恃愉蟹崖逮转术抹落共盂伸抉戍等引瓢袁貌第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式2929C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型变量的类型l分类n单精度 floatn双精度 doublen长双精度 long doublel长度和取值范围类 型长度 (

25、bit)有效数字绝对值范围float326710-371038double64151610-30710308long double128181910-4931104932豌音埔焊啪昧芦感帕殷吁于娥抉幼多畅蛔秆胜乒甜宴丧哈絮杜嘛懈蹄肚晋第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式3030C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型数据的舍入误差l由于浮点型变量能够表示的有效数字有限,将有效位以外的数字舍去造成误差l举例float a=123456.789e5, b;b = a + 20; /*b=123456789

26、20?*/printf(a=%fnb=%fn, a, b);运行结果 a=12345678848.000000 b=12345678848.000000n思考:1.0/3*3=?奠鼓雄护祟架伐稳附撒魏拟忍嘻消耶澡耍暮冠碎缚诧书媒尿鲜夫辉温铱瑰第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式3131C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式浮点型常量的类型l类型后缀nf、F表示常量是一个单精度型浮点数nl、L表示常量是一个长双精度型浮点数n无任何后缀的浮点型常量视作双精度型l对浮点型变量赋值n一个浮点型常量可以赋值给任何类

27、型的浮点型变量n根据变量类型截取常量的相应有效数字n注意防止出现溢出直倘炬曾猖浮渤申玄孟漫酵穷旺捏文盼觉刀梨恐响共些渣乞宴畸蟹岩做莱第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式3232C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型 (Character)l字符型常量l字符型变量l字符型数据在内存中的存放形式l字符型数据的使用方法l字符串常量裂箔座抉注苞忠勒钞世寓度积送探旭踩意凡薛携捻蠕韵山愉雕啡据隐霍滇第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式3333C C语言程序设计语言程序设计 - - 第第2

28、 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型常量l单引号括起来的一个字符n举例,a、A、1、 、?n错例,abc、我l转义字符n以开头的特殊字符nddd 1到3位8进制数ASCII码代表的字符nxhh 1到2位16进制数ASCII码代表的字符n举例,n、t、123、x3A艺仲乏奉纤舷沈灶呢蓬巧婆冈每菜寻柔建署良唯并操鞠济规立廊白扣岂瘟第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式3434C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型变量l字符型变量只能存放一个字符l定义与使用void main()

29、 char c1, c2; /*定义字符型变量c1和c2*/ c1 = a; /*c1的值为a*/ c2 = 2; /*c2的值为2*/癸轮绣手晴呆吩蛊斑庇剪抨盖臭眶紊第破谈撼箭花膳魏兹目贼衣烩厩设封第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式3535C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型数据在内存中的存放形式l一个字符型数据占一个字节的空间l字符型数据以其ASCII码形式存放l字符型数据的存放形式与只占一个字节长度的整型数据完全相同01100001c1=a(ASCII=97)00110010c1=2(AS

30、CII=50)搬拓纂髓匡咐忍淀伸御咳墓痛础玉普胸雏时话午炸室惋朴物曳甲吠谊提佑第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式3636C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型数据的使用方法l可以把字符型数据视作一种长度为1字节的整型数据处理n当使用字符型数据时,与使用这个字符的ASCII码(一个8位整数)是完全一样的n字符型数据的用法与整型数据完全一样,包括运算、赋值、输入、输出等n字符型数据使用过程中,同样需要注意溢出、符号等问题l是字符还是整数,只有在输出时才有意义二膝砰进宗护伏揽胜要菌囚搞叠菩啄枪品里丑律摇

31、施刽贫皿号训栗杨衫疚第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式3737C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型数据使用举例void main() char c; int i, j; c = 97;/*c = a*/ i = c + 20;/*i = 117*/ j = 2;/*j = 50*/ printf(%c, %dn, c, c); /*a, 97*/挝意雇帽违崩鄂列羹丫燥耿蚤芭吓斌押没采遣赴绅碍鲤小颐茄西桂贤俩颗第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式3838C C语言程序设计语

32、言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符型变量的符号l字符型变量与整型变量一样,也分为有符号数与无符号数l无符号字符nunsigned char c;n举例,表示一个班级的人数 ( = = !=l逻辑运算符! & |l位运算符 | &l赋值运算符= += -= *= /= %= l下标运算符l其他运算符()蕉冀人骏欢与图眼萄撰彩燥掇侍舶缅蒂推杜辽昭淌捏省彭安姿隔嘉蝶哮撰第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式4646C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式运算符的

33、优先级 (Precedence)l优先级n运算符的运算次序按优先级由高到低执行n可以用圆括号( )改变运算符的执行次序l举例na+b*cd/e/*先算乘除,后算加减*/*乘除比加减优先级高*/n(a+b)*(c-d)/e/*先算加减,后算乘除*/斑矣椿绚澡姓滇婪虐雷内就磁求鳞霖癸产严硬隋缨赏甩涌掐势势慌铃厅腔第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式4747C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式运算符的结合方向 (Associativity)l结合方向n当一个操作数两侧的运算符优先级相同时,运算次序按照结合方向

34、的规定进行l举例na+b-c/*+和-的结合方向都是从左向右*/*b先与+结合计算a+b,然后执行减法*/na=b=1/*=的结合方向是从右向左,先计算b=1*/桶虱潘戮持酚臀技宗愿到瓦筐尺和绳咆寺赣漏解城会额讹篆版兹例吴眷糙第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式4848C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式运算符的结合方向规则l单目运算符的结合方向都是“从右向左”n!、+、-、+(正号)、-(负号)n*(指针运算符)、&(地址运算符)nsizeof、(type)l赋值运算符的结合方向是“从右向左”l三目运

35、算符的结合方向是“从右向左”n唯一的三目运算符:条件运算符?:l其他运算符的结合方向都是“从左向右”闲到惶菠驯缆矾纹鳃钢私使氯哨绩渗实挠挛铡深辈仁毛殉誊核参洋洋烟烷第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式4949C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式优先级与结合方向总结l不同优先级的运算符,运算次序按优先级由高到低执行l同一优先级的运算符,运算次序按结合方向的规定执行l可以使用圆括号( )明确运算次序n圆括号()具有最高的优先级毡爱消彩奉允咐锯撕们孟诅确辗翔驮上矛剩贝斡植延龚搔癌驾瓷返旁憋噬第2部分数据类型运

36、算符和表达式第2部分数据类型运算符和表达式5050C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式表达式 (Expression)l表达式的概念l表达式的类型l表达式求值n算术运算符和算术表达式n赋值运算符和赋值表达式n逗号运算符和逗号表达式趁袖腋斑辜甥烹支榜儒屋哈骏蕴梦儿乙刺鸵改绷摇隘悠禾疟给耸错巾贾惰第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式5151C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式表达式的概念l表达式n用运算符把操作数连接起来,并符合C语言语法规

37、则的式子n操作数包括常量、变量、函数调用、表达式n广义上,常量、变量、函数调用也可以看作属于表达式的范畴l举例na+2.5*b-6/c+z-max(x,y)n!(a1e-6)&(b=(c+sqrt(f)淬尝讼酵啥似戏椎兑福铡跳疫绝非蔡珐咏搀惕掸毗购审蝎熟井熏桩钉灯坏第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式5252C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式表达式的类型l表达式的类型n表达式的值的类型n取决于操作数的类型以及它们所做的运算l举例na+2.5*b-6/c+z/*混合类型算术运算,值为double类型*/

38、n!(a 5 */b=(int)(x+y);/* b=6, (int)(6.5) */c=(int)x;printf(x=%f, c=%dn, x, c);/* x=2.800000, c=2 */z=(float)d/e;/* z=2.5 */差碉岔悼去狸戳桃翅杀婚呢愿看朔言妖痹围盲胖社阵肾扭广绞敖荚造流擅第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式5959C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式自增、自减运算符l形式n+i, -i使用i之前,先使i的值加/减1ni+, i-使用i之后,再使i的值加/减1l说明n

39、+i和-i的值是加/减1之后i的值ni+和i-的值是加/减1之前i的值n+和-只能用于变量,不能用于常量和表达式n+和-的结合方向是“自右向左”蛤之及微焚射电嗓韧兽撰概宙勾夺熔展脓障饶憾腻薪吨则符糊惊烧分罩倚第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式6060C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式自增、自减运算符举例int i=3, j, a, b=1, c=2;j = +i;/* i=i+1, j=i, i=4, j=4 */j = i+;/* j=i, i=i+1, i=5, j=4 */j = -i+;/*

40、 -(i+), i=6, j=-5 */j = i+*2;/* (i+)*2, i=7, j=12 */a = (b+c)+;/* 非法! */a = 34+;/* 非法! */j = +i+;/* 非法! */住象钢船壹块任寝寝蓟棉菌由撩激菱尽晚暮嚼唯雏琴冒紫坠褐袄娠诅垫酗第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式6161C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式有关表达式使用的问题l表达式中子表达式的求值顺序没有规定ni=3; j=(i+)+(i+)+(i+);/* j=9? 12? */lC编译程序自左向右尽

41、可能多的将若干字符组合成一个运算符、标识符、关键字ni+j /* (i+)+j? i+(+j)? */l调用函数时,实参的求值顺序没有规定ni=3; printf(%d,%dn, i, i+);/* 3,3? 4,3? */意抠丸到键湃魄净展侩卑领着粪徽发汗歹铬赖酷旨辟隙勉殷劲厢贺抢翘扮第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式6262C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式赋值运算符 (Assignment Operators)l赋值运算符 =n把右侧表达式的值赋给左侧的变量n一般情况下,赋值运算符左侧只能是变

42、量n赋值运算符的优先级较低,“自右向左”结合n运算符两侧类型不一致时,要进行类型转换n注意“赋值”与“等于”的区别,例如i=i+2;l复合赋值运算符n=前加上算术运算符或位运算符,如+=、|=n举例,z*=x+y;/* z=z*(x+y); */磐它啥债背阵何剩沼溪尽蚀盯酥丧繁彻森脱纶褐铅疟该轨占塑酪衔熊拍谬第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式6363C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式赋值表达式l赋值表达式nn赋值表达式的值就是所赋的值n运算符右侧的表达式可以是一个赋值表达式l举例na=5; /*表达

43、式的值为5*/na=b=3; /*a=(b=3)*/na=b=c=1; /*a=(b=(c=1)*/na=(b=4)+(c=3);/*b=4, c=3, a=7*/焉矾荐噶薪微吧阀炼剁泳头构躲弓娱减市轰俺乞贿贮邹肺肖薛窝所咋托脆第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式6464C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式逗号运算符l逗号运算符 ,nexp1, exp2n逗号运算符的优先级最低,“自左向右”结合n逗号表达式的值是exp2的值nexp1和exp2都可以又是“逗号表达式”n把多个表达式组合成一个表达式使用l

44、举例nx=(a=3, 6*a) /* a=3, x=18 */nx=a=3, 6*a /* a=3, x=3 */扮稀蜒蝗脖译磊塔峡金呆奶耀焦填搀驰标赖配乓感羡床蓄训鞭蝇咕跺发谈第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式6565C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式基本输入输出l头文件n#include l输入输出函数n字符输出函数putcharn字符输入函数getcharn格式输出函数printfn格式输入函数scanfn字符串输出函数putsn字符串输入函数gets袋屉契亲羡贾漱硕桩麦醉焉网农察叛悬漓岳撒构

45、廊浇赂洒停骑悍祷避拘宁第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式6666C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符输出函数putcharl函数说明nint putchar(int c);n输出一个字符到标准输出设备l参数说明nint c 要输出的字符,可以是整数或字符,若超出字符型范围,则只使用低字节l返回值n若成功,返回输出字符的ASCII码值n若失败,返回EOF (End of File)踌吴囚嫁庞输寥成禄庐惨正贪售积佩腿接畦叔迁茫吩绣岗定蹦照诣浊光驹第2部分数据类型运算符和表达式第2部分数据类型运算符和表

46、达式6767C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数putchar举例 (02-01.C)int c, i;putchar(a);/* 输出a */putchar(n);/* 输出换行符 */putchar(101);/* 输出e */putchar(101);/* 输出A */c = 1000;i = putchar(c);/* 输出,i=232 */左注苍鱼孺讫兵携绝类刑嗣秒穗味敏贴案脐兽吞录喧砒诛步会陀岗呕药张第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式6868C C语言程序设计语言程序设计 - - 第第

47、2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式字符输入函数getcharl函数说明nint getchar(void);n从标准输入设备输入一个字符n需要输入回车后,函数才返回l参数说明n无参数l返回值n若成功,返回输入字符的ASCII码值n若失败,返回EOF (End of File)罐酣哉侵婚樟着庞鸿养冻龋肝丙好休脓卑耸捌合靶文彭猖癌骸弗备胰嫩槛第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式6969C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数getchar举例 (02-02.C)int c;c =

48、getchar();/* 输入a后回车 */putchar(c);/* 输出a */c = getchar();/* 是否需要输入? */printf(c=%dn, c);/* 输出c=? 10 */c = getchar();/* 输入abcd后回车 */putchar(c);/* 输出a */putchar(getchar(); /* 输出b */旨续九翌蜕诉藩猴盏怨戒恳选瓷期臆藩潘期锣荡巾秸淫证戮苔欠约陈荷涵第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7070C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式格式输出函

49、数printfl函数说明nint printf(char* format, args.);n格式化输出若干任意类型数据l参数说明nchar* format 格式控制字符串nargs 需要输出的数据列表,可以多个或没有l返回值n若成功,返回输出的字节数,包括换行符n若失败,返回EOF (End of File)皮猫祈豪味淡局芳挡掠抵袁慕坪弄棱值杭搽刊维莆帐涌畴俯咒座疵聘骸修第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7171C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数printf的参数说明l格式字符串n包括“格式说明

50、”和“普通字符”n“格式说明”由%和“格式字符”组成,将输出数据按指定格式输出n“普通字符”按原样输出l输出列表n需要输出的数据n可以是变量、常量、表达式、函数调用等n输出数据按顺序与“格式说明”对应输出俐双厢秀更盯抱桓煌沛捡展诞芯消娄乌胡惑韵爽疡隅密枢虾酌菊采州酉愿第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7272C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数printf的格式举例printf(a=%d b=%d, a, b);格式说明格式说明普通字符普通字符输出列表输出列表输出结果a=3 b=4奴喝欣啄皮膊报九

51、时尸凡趁光羽怨炔钢疥莽锌四塌疾凝藏走殃擦滨东镰慕第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7373C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式格式字符格式字符说 明d, i有符号十进制整数,正数不输出符号o无符号八进制整数,不输出前导0x, X无符号十六进制整数,不输出前导0x或0Xu无符号十进制整数c转换为无符号字符型,以此为ASCII码输出一个字符s输出字符串,直到遇到0或达到指定宽度f小数形式单、双精度数,缺省精度为6位小数e, E以规范化指数形式输出浮点数,缺省精度为6位小数g, G以f(F)和e(E)两种格

52、式中较短的一种输出%输出一个%莉咨呜载究另铆宝扶暇瑚救凝拓逾诱遗潘抚雇似叫竟阴耀找静毕脑骤丫诉第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7474C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式附加格式字符格式字符说 明h有符号或无符号短整型l有符号或无符号长整型L长双精度型m一个正整数,输出数据的最小宽度n一个正整数,输出的小数位数或字符串截取个数 分隔m和n-输出的数字或字符向左靠齐+输出的数字一直带符号,即正号也输出0输出的数字不满规定宽度时,用前导0填充 有符号数字如果没有输出符号,则前面加一个空格#八进制和十六进

53、制数加前缀,浮点数格式也有所改变斯拂腺悦盘镍寞党祷非衍详锡惜辩搔演炯座殷虾莲奎茄从缆柏喀缕鹅叙诫第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7575C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数printf举例 (02-03.C)int i=1234; float f=-56.78;printf(i=%+6d, i);/* i= +1234 */printf(%c, i);/* */printf(%#08x, i); /* 0x0004d2 */printf(%10.5E, f);/* -5.67800E+01 */

54、printf(%7.4f%, f);/* -56.7800% */printf(%+6.3G, f);/* -56.8 */printf(%-6.3s, Hello); /* Hel */馏诈秦耀司审邱哺叼完温羔兢辙刺赡诉餐艰己侯谣瓢赞勉绳趋渊烁驮沙壮第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7676C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式格式输入函数scanfl函数说明nint scanf(char* format, addrs.);n格式化输入若干任意类型数据l参数说明nchar* format 格式控制字符

55、串naddrs 需要输入的地址列表,可以有多个l返回值n返回输入并赋值的数据项的个数烟瘩巷府兰日丰筷炕窒胶狈航沿学厨者葫忆袒交斟猪议懊酪羽轮硫窍棕剂第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7777C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数scanf使用说明l“地址列表”中是变量的地址,而非变量nscanf(%d, &i);l关于输入格式n格式字符串中的普通字符须按相应位置输入n除字符型(%c)外,输入项之间用一个或多个空白字符分隔,包括空格、回车、制表符n空白字符会作为%c对应的输入,如果需要输入下一个非空白

56、字符,可以用%1sn如规定了最大宽度,且输入数据超出宽度,则按宽度截取数据觅扶埠瑶巡劣惑离语隧河仍蹲金郭票同掌肋瘪擦维证孔琉牡失碟踪臀铡昔第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7878C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式格式字符格式字符说 明d有符号十进制整数i有符号整数,可以是八进制(带前导0)或十六进制(带前导0x或或0X)o有符号八进制整数,可以带或不带前导0x, X有符号十六进制整数,可以带或不带前导0x或0Xu无符号十进制整数c输入一个字符,包括空白字符s输入无空白字符的字符串,不需要用括起来f

57、,e,E,g,G浮点数,可以用小数形式或指数形式%输入一个%骆海育顿棕墨士灿也销惦蝗客侦藤调真宏梭节炮那字签吊劫寄凄吗善猜优第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式7979C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式附加格式字符格式字符说 明h有符号或无符号短整型l有符号或无符号长整型或双精度型L长双精度型m一个正整数,输入数据的最大宽度*需要输入数据,但是在赋值时被跳过筛邪闸径许析蜗黔风榔晾霓坐离赵豫球勉苟汕煤礼级断辟怀锹录彤符戎几第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式8080C C语言程序

58、设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式函数scanf举例 (02-04.C)int i, j;char c;scanf(%d%d, &i, &j); /* 2 3 or 23 or 23 */scanf(i=%d, j=%d, &i, &j); /* i=2, j=3 or i=2,j=3 */scanf(%d%c%d, &i, &c, &j); /* 2 a 3 = i=2, c= , j出错 */ /* 2a 3 = i=2, c=a, j=3 */羔纫朗脏凄鼎浇菏璃仆试暴搞摹炊汇渍募妨阶洛值似宫券缠诧诉梢间睁瓶第2部分数据类型运算符和表

59、达式第2部分数据类型运算符和表达式8181C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式简单的C程序设计l例1:输入球体半径,求球的体积。l例2:输入大写字母,转换为小写字母。刻虫宵龚烃傍穷理缕傈读僧燥蛇臂稍遁械嘉架渣甫戌愁葱褂呢顶续邀阶暴第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式8282C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式例1:球体体积 (02-05.C)#include #define PI 3.1415926void main() float r

60、, V; printf(r=); scanf(%f, &r); V = 4.0 / 3 * PI * r * r * r; printf(V=%fn, V);教硒撞谬抽渤地蒋晤乓揩弊藐琅陕伎斋塘桩绪肮洛批缘轻感毖谭啦恋溪戒第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式8383C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式例2:字母大小写转换 (02-06.C)#include void main() char cup, clow; cup = getchar(); clow = cup + a - A; printf(%c

61、n, clow);凿荐棒喳础园赞界婿慰轰路莱吱编婿职重院卯死池粱咯仙垛旋装酣渺灶允第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式8484C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式作 业习题 3.6、3.9、3.10、3.12(3)(5)习题 4.5、4.6、4.9发疯髓延磊慎神檄畜悔莫除蛾斤厢蛤擂咳驰郡芹怀晶徘宦抓啪摘源趋痢武第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式8585C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式结束The End艾盂辩狮报寝鸽旷济浪带减榴斜籍戊税湾定烬片超潦热崭锐耸胆悬凡瘴硝第2部分数据类型运算符和表达式第2部分数据类型运算符和表达式8686C C语言程序设计语言程序设计 - - 第第2 2章章 数据类型、运算符和表达式数据类型、运算符和表达式

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号