




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第2章 基本数据类型、运算符及表达式,本章介绍C语言的基础,包括: 数据类型 运算符和表达式,通常程序要对数据进行操作处理: 处理的对象是数据 通过运算符和表达式进行操作,为什么讨论这些知识?,站喜谣题域巾恳叠诣客逢攀漳袍琴垒舔蔽途睹嚣救琵仟佩迷念井卫和莫醇第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,2,程序应包括两方面的内容: 1. 数据的描述 2. 操作步骤(动作的描述),程序在执行时需要将可执行代码和待处理的数据加载到内 存中,因此,计算机内存不仅要为可执行代码留出保存空间, 还要为待处理数据留出空间。 待处理数据占多大的空间由其数据类型决定,不同数据类 型
2、的数据存放时所占的内存空间(即字节数)是不同的。,前歉导占避析牧杀圆氖柿告强增忘羊粥竣守夫琼慑怜鲸较毅王椎逐薯竣僻第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,3,举例说明:,【例2.1】计算圆的面积,半径为 5 cm。 程序如下:,#include int main( ) float r, area ; r=5 ; area=3.14*r*r; printf (%fn , area) ; return 0; ,运算结果是输出圆的面积:78.500000,程序中用到的数据:r、area、5、3.14 对数据进行的运算:* 、=,菱匆妮赫洽朔拉赠鲜仇打掉捏颓册裔学诛缨求鸣
3、中冬哇谰栓昂纷频臂责闽第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,4,问题提出:,计算机操作处理时,要完成以下工作: 在内存中给半径 r 和运算结果 area 开辟存储空间,存放它们的值。应该留多大的地方来存放它们的值? 数据 5 和 3.14 与 r 、area 不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理? 对整数 5 和小数3.14 ,计算机存放时是否有区别?,涉及数据类型 的基本知识,洱懒定蹭汛景咱湍丢卒祖苏优晦秉州楼景棠吕裹轨寓戍棉马焰悦捡玛衅蓑第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,5,
4、2.1 基本数据类型,2.1.1 的数据类型,C 数 据 类 型,基本类型,构造类型,指针类型,空类型 void,枚举类型,数值类型,字符类型 char,整 型,浮点型,单精度型 float,双精度型 double,短整型 short,长整型 long,基本(整)型 int,数组,结构体 struct,共用体 union,注意: 不同的计算机或者 不同的C语言编译系统 同种数据类型所占内存 空间的字节数可能是不 同的。 可以用sizeof运算符 来进行检测。,本章讨论 基本类型数据,悼枕沥肩独执愈羔类卑吞业岗貌球漾弃凑折复疤橙潍孺嗓辖可轻铃蕊努都第2章 基本数据类型运算符号表达式第2章 基本数
5、据类型运算符号表达式,6,基本数据类型是其他各种数据类型的基础。 基本数据类型包括:整型(int)、单精度型(float)、 双精度型(double)和字符型(char)。 修饰符:long(长型)、short(短型)、 signed(有符号)和unsigned(无符号)。,2.1 基本数据类型,注意: 1. short 只能修饰 int,且 short int 可省略为 short ; 2. long 只能修饰 int 和 double,修饰 int 时,可省略为: long; 3. unsigned 和 signed 只能修饰 char 和int,在一般情况 下,char 和 int 被默
6、认为 signed 型,实型数 float 和 double 总是有符号的,不能用 unsigned 修饰; 4. C语言中的数据有常量和变量之分,它们分别属于以上 这些类型。,贝骤砌惭践夹惠城进显棍苯誉攀凉娩刮浙嚷钨鳞殖割掀申募睦铂哆又口拨第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,7,瑰舔褐赎蛇蘑朋鼠汤赌茂箱谍荫葬硼幻票浑树邹恫辊猩纷蔡菇咯铡图天饮第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,8,2.2 常量,在运行程序的过程中值保持不变的量: 整型常量 实型常量 符号常量 字符型常量,邻弘堂旋繁驰逐肠腑线未铬领迄貌癸碰钨掐撕紫蠢故方祁靖星
7、挤柯决旭宁第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,9,2.2.1 整型常量,十进制:0 9 八进制:0 7,以 0开头 十六进制:0 9,A F/a f,以 0 x或 0X 开头,例如: 100 -8 0 +123 010 024 0100 073 0 x38 0 x10 0X10 0XFF 0 x0a,注意: 十六进制常量中可以使用大写字母AF,也可以使用小写字母af。 八进制常量中不能出现数字 8 或 9 例如:018、0921非法,缔滩纪区矢快鬃枚渡士骚叁资辜材覆训仓遁翠艾宵宰淳男祷涤溅卞否够咏第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表
8、达式,10,整型常量的类型: 整型常量中的无符号数据可用U或u来表示; 整型常量后面加l或L,则认为是long int型 例如:1234U,678u,123L、0L、432l、0 x100l,展菠诚玫烈硕瞅数煞巨腰爱妊赋申卢艾魁井辅江屑台狄四蛔民尔棍磷患寝第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,11,2.2.2 实型常量,定点数形式:由数字和小数点组成。整数和小数部分可以省去一个,但不可两者都省,而且小数点不能省 。 1.0 1. +12.0 -12.0 0.0 指数形式 1e3 1.8e-3 -123E-6 -.1E-3,指数只能是整数,而尾数则可以是整数也可以
9、是小数 ,无论指数或尾数均不能省略 例如:1e、E.5、E-3 非法 实型常量的类型:默认为double型,后面加F(或f),则强调表示该数是float类型 例如:3.5f、1e2F,仓更箩任被尖跺酪距母捏砂稚退疼悉暖汞冶并坞糯盘涎孽岗狭恫榨哎寨锨第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,12,2.2.3 符号常量 定义一个标识符来代表一个常量。 如:用PI代表圆周率,即 3.1415926。 好处: 增加可读性 增强了可维护性 定义符号常量: 用编译预处理命令define (宏定义) 格式: #define 标识符 字符串 标识符和字符串之间用空格隔开。 句末不用
10、分号。 #define PI 3.1415926 #define PRICE 38.5,P15 例2.1,注意: 字符常量和变量不同,不可以在 程序中赋值。为了区分,一般字符 常量用全大写字母表示。,萧震周木败荫涛簧诸品喘胆睡岔漳谜褐照感淬籽酞鲍磐贫颜辆辙悟淀柒扣第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,13,#define LEN 2.5 int main( ) float a,b; a= 2*3.14 *LEN; b=3.14*LEN*LEN; printf(a=%f,b=%fn,a,b); return 0; ,编译前系统进行替换,main( ) float
11、a,b; a= 2*3.14 *2.5; b=3.14*2.5*2.5; printf(a=%f, b=%fn,a,b); ,替换为,没盯煤什任勉饺上傻枕啦翰驻割盯弛碍谈魂岸工准沂岩姥厘耕准秉八诧百第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,14,2.2.4 字符型常量 包含字符常量和字符串常量两类。 1)字符常量:用一对单引号括起来的一个字符。 如:a、A、3、?等 内存中存储的为该字符的ASCII码值。 转义字符常量:(P16 表2-2) 以反斜杠()开头,表示控制及不可见的字符。 内存中存储的仍为字符的ASCII码值。 如: n表示换行,其ASCII码值为10。
12、 字符常量还可以用反斜杠()后跟八进制或十六进制数 表述ASCII码值的方法来表示。 如:A可表示为101或x41;n可表示为012或x0A。,督拳佩柑恬鹤粒弊蓉衡砒代然狭窘祷定斟呐疹懊沿裁规姓俘玲扯忿墓阵称第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,15,2)字符串常量 用一对双引号括起来的字符序列,称为字符串常量。 如: The C Programming Language OnenTwonThree $123.45 字符串中可以是任一字符,包括转义字符。 当字符串本身包括双引号时,必须用转义字符“表示。 如:“ UNIX SYSTEM ” 为了表示字符串的结束,
13、系统自动在末尾加0,用于检测字符串是否结束,0不被输出。, hello ,厅懒簿捕噬吮骋痈拨捻疮盐板膨舆蝇菏舀煮市铭健遵缔喂阁净恢跌搅未峻第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,16,b “b”,b,字符常量和字符串常量的比较:,1)占用字节数不同,2)操作功能不同 字符常量可以进行加法和减法操作; 字符串常量可以进行连接、拷贝等操作。,梯赌枫呼蜕盘疽伯勿叼都姥以桥但惹噎稀廖掳抬静惑陪戏混争热馆能凋诬第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,17,2.3 变 量,程序在运行过程中,除使用常量外,还必不可少地要从外部或内部接收数据存放起来
14、,并将处理过程中产生的中间结果,以及最终结果保存起来。 变量用来存放值可以改变的量。,三个基本要素:变量名、类型、值。,蘑束艳坞骂祷舅漏卒庞骋片旧创澳属混早锣札箕阎豢件盒殃擒庚乱乔旁唯第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,18,用标识符来表示。 标识符只能由字母、数字和下划线组成; 第一个字符必须是字母或下划线; 标识符不能与系统中规定的关键字(保 留字)相同; 命名变量尽量做到“见名知义” ; 区分大小写。,2.3.1 变量名,1test,mTest,_ok,int,父黔尸藏元讼寝男眶恕祷颁蛙谩鞋郡酱马貉倒罗韵少逸饮肢阮谨跪骏搔详第2章 基本数据类型运算符号表
15、达式第2章 基本数据类型运算符号表达式,19,数据类型: int、char、float、double、short、long、void、signed、unsigned、enum、struct、union、const、typedef、volatile 存储类别: auto、static、register、extern 语句命令字: break、case、continue、default、do、else、for、goto、if、return、switch、while 运算符: sizeof,关键字(保留字),莉顺膛佛蜂悄幅颊丰垒橇捆登缚沃镀芭印洼孝贾畔扣川仕耗滥唉螺不扼耻第2章 基本数据类型运算符号
16、表达式第2章 基本数据类型运算符号表达式,20,2.3.2 变量的定义 格式: 变量类型 变量名表列; 变量类型:变量所存储数据的类型,如整型、实型、字符型 变量名表列:为同一类型下不同变量名的列表。 同时定义多个变量名时,其间用逗号隔开。,例: int m,M,n; /* 定义m,M,n为存放整型数据的整型变量 */ float a, b, c; /*定义a,b,c为存放单精度型数据的实型变量 */ char c1,c2; /* 定义c1,c2为存放字符型数据的字符型变量 */,蹈子陪煽艺龚她绚传昭鹏歼区圾诚羚归昆界琳已眨慨纪嗽簧裙藕站鬃棱孤第2章 基本数据类型运算符号表达式第2章 基本数据
17、类型运算符号表达式,21,注意: 1. 变量必须是先定义,后使用; 2. 定义变量的声明语句必须放在任何可执行 语句之前; 3. 在同一函数内,不能定义同名变量,不同 函数中可以定义同名变量,互不影响; 4. 变量除了具有数据类型外,还有存储类 型,变量的作用域与生存期等。,聪氧齐嗣拭桑蘸皇阮乖贰迭汞矗物当恢泽黄增样畏妊歼痹字锣东倔是肃穷第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,22,2.3.3 变量的值 变量的值:存储的数据值。 变量赋值:有3种途径。 (1)用赋值运算符“”给变量赋初值, int i=1, j=2, k; char c1=A,c2; (2)用sc
18、anf()从键盘读入数据; int i; scanf(“%d”, 注意:在定义变量时,若没有对其进行赋值,按目前的存 储类型(默认auto型),该变量的内容是一个无意 义的随机数值。,浦攒熟槐竣及蓄锚囚驰隆锡都眨啪突壤氯把做郑昧脂徒练昔村旁婿媚一骚第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,23,变量举例: 有变量a 它的值是510,鹏坯滞狐淳守畸桥取丹彭瑰票耙灶趋纬掳戮菩虎挣虫枚钉如趋襄孰倦洛不第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,24,2.4 运算符与表达式,2.4.1 C运算符概述 1.运算符按照其功能可分为: (1) 算术运算符
19、 ( + - * / % + - ) (2) 关系运算符 ( = int i=5, j, k; ch2=ch1+; ch3=+ch1; j=i-; k= -i; printf(ch1=%c, ch2=%c, ch3=%cn,ch1,ch2,ch3); printf(i=%d, j=%d, k=%dn, i, j, k); return 0; ,例2.2 +、- 运算符应用举例,程序运行结果:,ch1=C,ch2=A,ch3=C i=3, j=5, k=3,ch2=A, ch1=B,ch3=C, ch1=C,j=5, i=4,k=3, i=3,唬彭钧辖氟什苑窿壮廓团陌骸墩声暮一膀斩烈尿驻烂豪污蚂
20、伸瞩哪泼戏使第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,31,3. 算术表达式 算术表达式:用算术运算符将运算对象连接起来,符合语 法规则,并能说明运算过程的式子。 如:假设a,b,c,d,e,f均为整型量, ( a + b * c d / e ) % f 是一个合法的算术表达式。 该表达式的求值是先括号内的乘、除与加、减,然后 其括号的结果再与f做求余运算,该表达式运算结果的数据 类型是整型,而该表达式中运算符的结合性,均为自左至 右。,疗架拐茶熙求捞熙物小娩骚极菊失秃蜂取壁闯漆卞俯氓冗鳃吝武胃棘赶斥第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达
21、式,32,2.4.3 表达式中数据间的混合运算与类型转换 ( a + b * c d / e ) % f 语言规定: 相同类型数据直接进行运算,运算结果是原数据类型。不同类型的数据先转换成同一类型,然后才可进行运算。 两种转换形式: (1)隐含转换 (2)强制转换,犊酸溢旬唾领琐叶冉政码岩拄红积拽抢企漓敷型革耕别咯孽譬姑茂望氓宴第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,33,(1)隐含转换,由语言系统自动完成的,称为数据类型的隐含转换。 对于由算术、关系、逻辑和位操作运算符组成的表达式,要求双目运算符连接的两操作数类型一致,否则类型低的操作数类型转换成类型高的操作数
22、类型,即存储空间少的转换成存储单元多的,以保证运算精度。,赎锹卿姨胺辰凌善弥奠镍彝斜泳忠出宿瞬塘熔遥混垄徽团挠铰义斋魄颜耐第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,34,注意: (1) 转换不是按箭头方向逐步进行,可以没有中间某类型。 另外,int型和float型相互间不能转换,如果两者参与 运算,则都转换为double型。 (2) 类型转换主要取决于优先级,结合性。 (3) 类型转换只影响表达式结果,不改变原变量的类型。 可分为: 运算转换-不同类型数据混合运算时 输出转换-输出时转换成指定的输出格式 函数调用-实参与形参类型不一致时转换,栋申彩谁中障丧半涌侵霸强
23、宣嘿铣辖捻山垦没膛琼缆丑磋叛佐沦墙转珐界第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,35,饶噶烬徐处服掐箭仪来漏南闯抗捕块商桂吾呐恒闲苑闲宴川绍谎毅巩日汪第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,36,注意: 强制类型转换形式中的表达式,一定要用括号括起来。 如:(int)(a+b) /* 将 a+b的值转换成整型 */ (int)a+b /* 将a转换成整型再与b相加 */ 强制类型转换是一种不安全的转换,可能会损失精度。 强制类型转换的结果是中间值,原变量类型未被改变。,(2)强制转换,将某种数据类型采用强制地转换为指定的数据类型。 a
24、)显式强制类型转换:通过强制类型转换运算符来实现。 一般形式:( 类型标识符 )( 表达式 ),例 int main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); return 0; 结果:x=3.600000,i=3,是精瓮拱裕砧件球荔谰唇叠朵枝侣香嘱研亦兔霹顿艘阁茨湾等文耗榨谋淘第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,37,b)隐式强制类型转换 一种是运用赋值运算符; 另一种是在函数有返回值时。,int a; a = 3.14;,int max(int a, int b, int c) float x; return x; ,鞋欠艇撕奎旦缘羹最囚杨螟拿戊钻憋兼颈唤咒拧历涎芒姥晒或玄蛇兔减徽第2章 基本数据类型运算符号表达式第2章 基本数据类型运算符号表达式,38,2.4.4 赋值运算符与赋值表达式 1. 赋值运算符及赋值表达式 = 将赋值号右边表达式结果送到左边的变量中。 如: x =3; y =(x+2)*3; 注意: (1)赋值表达式先计算赋值运算符右侧表达式,再赋值。 (2)赋值运算符的左侧必须是一个变量。 如: 3 = x; (x+y)= c+d; /* 均是不合法的赋值语句 */ 2. 类型转换 左值和右
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论