




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计,贾宗福,哈尔滨学院软件学院软件工程专业课程(必修课),第二章 数据类型、运算符与表达式,C语言的数据类型 常量与变量 整型数据 实型数据 字符型数据 算术运算符和算术表达式 C运算符和C表达式,C语言的数据类型,一、数据类型,数据:是程序处理的对象。 例如:整数、实数、字符串、逻辑值。 数据类型:是指将数据根据表达形式的不同而划分的类别。数据类型(数据结构)是指数据的组织形式。规定了一定的取值范围(值域)和在该值域上所进行的各种操作。,一般分为:,二、数据类型分类,指针类型(*) 数组类型( ) 结构体类(struct) 共用体类型(union) 函数类型,基本类型 枚举类型(enum) 派生类型 空类型(void),整型 实型,基本整型(int) 短整型(short int) 长整型(long int) 字符型(char),单精度型(float) 双精度型(double) 长双精度型(long double),C语言的数据类型,一、常量,常量区分为不同的类型 分类:字面常量(直接常量)、符号常量,常量与变量,1定义 在程序运行过程中,其值不发生改变的量称为常量。,说明:,例:字面常量 整型常量:12、0、-3 实型常量:4.6、-1.23; 字符常量:a、b,#define是预处理命令,与语句区分开。它占独立一行,不用分号结束。 标识符的值在其作用域内不能改变(不是变量),也不能再被赋值。 习惯上符号常量名用大写,变量用小写。 使用符号常量的好处是:含义清楚(见名知意);在需要改变一个常量时能做到“一改全改”。,2符号常量,一、常量,格式: #define 标识符 常量 功能:用一个指定的标识符来代表一个常量。,说明:,常量与变量,2符号常量,一、常量,常量与变量,例:,#define PRICE 30 #include void main() int num,total; num=10; total=num * PRICE; printf(“total=%d“,total); ,二、变量,常量与变量,1定义 在程序运行过程中,其值可以改变的量称为变量。,说明:,一个变量应该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放变量的值。 区分变量名、变量地址、存储单元、变量值的关系。 变量名命名原则?,关键字:32个英文单词,系统内具有特定含义,不能另作它用。 标识符:程序员定义的单词,程序正文中的一些实体,包括符号常量名、变量名、函数名、数组名、类型名、文件名等。,二、变量,常量与变量,2标识符的命名原则,(1)C语言的词法记号,以大小写字母或下划线开始; 由字母、数字和下划线三种字符组成; 区分大小写字母; 见名知意,不能与C语言的关键字相同; 标识符长度无统一规定,但最多32个字符。,英文字母:AZ az 数字:09 特殊字符:(空格)!#% &*_(下划线)+ - = / ” ( ) ,二、变量,常量与变量,2标识符的命名原则,(2)C语言的字符集,(3)命名原则,变量必须先定义,后使用。 定义多个同类型的变量时,变量之间用逗号分隔。 凡未被事先定义的,不作为变量名。 指定每一变量属于一个类型,这就便于在编译时,据此检查该变量所进行的运算是否合法。,二、变量,常量与变量,3、定义变量,格式:数据类型名 变量名表;,功能:在编译时按照指定的类型为变量分配相应的存储单元。,说明:,#define PRICE 30 #include main() int num,total; float v ,r,h; num=10; total=num*PRICE; printf(total=%d,total); r=2.5; h=3.2; v=3.14159*r*r*h; printf(”v=%fn”,v); ,变量名: 以字母或下划线 开头,由数字、 字母、下划线构 成。最多32个字 符,多余不识别. 一般小写。,名字常用大写,常量与变量,例:,#define PRICE 30 #include main() int num,total; float v ,r,h; num=10; total=num*PRICE; printf(total=%d,total); r=2.5; h=3.2; v=3.14159*r*r*h; printf(”v=%fn”,v); ,根据值的大小 自动确定类型 十进制:123, 456 八进制:0开头 十六进制:0x开头 无unsigned型, 但非负数可对 unsigned变量赋值,int、unsigned int 2字节 short 【int】 unsigned short 【int】 2字节 long【int】 unsigned long【int】 4字节,整型数据,一、举例说明,二、整型数据的定义及取值范围,类型 定义符 位数 数值范围 I/O格式符 有符号: 基本整型 int 16位 -3276832767 %d 短整型 short 16 同上 %hd 长整型 long 32 -231(231-1) %ld 无符号: unsigned int 16 065535 %u unsigned short 16 同上 %hu unsigned long 32 0(232-1) %lu,整型数据,#define PRICE 30 #include main() int num,total; float v ,r,h; num=10; total=num*PRICE; printf(total=%d,tatal); r=2.5; h=3.2; v=3.14159*r*r*h; printf(”v=%fn”,v); ,十进制形式 指数形式:123E3 (123103 ) 不区分单、双精 度,赋值时截取有 效长度。如: float a; a=111111.111;,7位有效数字,float 4字节 7位有效数字 double 8字节 15位有效数字 long double 16字节 19位有效数字,实型数据,一、字符常量 单引号括起来的一个字符,如:a, D, ?, $,转义字符:一种特殊形式的字符变量,是以一个“”开头的字符序列。在屏幕上无法显示,在程序中无法表示的字符。 见P_30,二、字符变量 用来存放字符常量,例:char c1,c2; c1=a; c2=A;,字符型数据,三、字符数据在内存中的存储形式 以ASCII码存储,占1字节,四、字符数据的使用方法 字符数据和整型数据之间可以通用,可以按 字符形式输出,也可以按整型输出。,字符数据与整型数据可以互相赋值。,五、字符串常量 例:“CHINA“ “a“ a,所以:char c; c=“a“;,字符型数据,例1,main() char c1,c2; c1=97; c2=98; printf(“%c, %cn“,c1,c2); ,运行结果: a ,b,字符型数据,例2,运行结果: 97 98,main() char c1,c2; c1=97; c2=98; printf(“%d %dn“,c1,c2); ,字符型数据,例3,运行结果: a ,97 a ,97,main() int i; char c; i=a; c=97; printf(“%c,%dn“,c,c); printf(“%c,%dn“,i,i); ,字符型数据,算术运算符与算术表达式,一、算术运算符,1、基本的算术运算符,+ - * / %(取余),(若整数相除,结果取整),说明:/ 整除 若/的两操作数都为整数,则为整除 如:5/2=2 , 5.0/2.0=2.5 例 int i=15; float f ; f=i/10; 结果为:f=1 如果将第三条语句改为 f = i/10.0; 或f = i/-10; 则结果为:f=1.5 ,或f=-1,算术运算符与算术表达式,1、基本的算术运算符,说明:% 取余 求两个整数整除后的余数,余的符号与被除数相同 如:3%4=3 4%4=0 例 #include void main() int n; n=40%5; printf(“n=%dn“,n); n=40%7; printf(“n=%dn“,n); n=40%-7; printf(“n=%dn“,n); n=-40%7; printf(“n=%dn“,n); n=-40%-7;printf(“n=%dn“,n); ,输出结果: n=0 n=5 n=5 n=-5 n=-5,一、算术运算符,算术运算符与算术表达式,2、自增、自减运算符 、,一、算术运算符,+i,-i 在使用i之前,先使i的值加(减)1 i+,i- 在使用i之后,使i的值加(减)1,例:#include void main() int i=3,j; j=+i; printf(“j=%d,i=%dn“,j,i); j=i-; printf(“j=%d,i=%dn“,j,i); ,输出结果: j=4,i=4 j=3,i=2,算术运算符与算术表达式,2、自增、自减运算符 、,一、算术运算符,说明:,+、-只能用于变量,而不能用于常量或表达式 +、-的结合方向是“自右至左”,例: 8+ -5 (a+b)+ -(c-4),算术运算符与算术表达式,二、算术表达式,1、算术表达式,用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称C算术表达式。 运算对象包括:常量、变量、函数等。,例如:a+b (a*2)c (x+r)*8-(a+b)7 +i sin(x)+sin(y) (+i)-(j+)+(k-),算术运算符与算术表达式,二、算术表达式,2、运算符的优先级,语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。即按从高到低次序执行。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。,算术运算符的优先级: 先乘除余,后加减 负号、+、-高于乘除余,见书:P302 附录C 运算符和结合性,算术运算符与算术表达式,二、算术表达式,3、运算符的结合性,例如:表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。 这种自左至右的结合方向就称为“左结合性”。,语言中各运算符的结合性分为两种: (1)左结合性:从左至右 (2)右结合性:从右至左(一元、条件运算符、赋值运算符),算术运算符的结合性: 自左至右,即先左后右,而自右至左的结合方向称为“右结合性”。最典型的右结合性运算符+、-和赋值运算符。 例如: -i+ 相当于-(i+) x=y=z 由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。,算术运算符与算术表达式,二、算术表达式,3、运算符的结合性,算术运算符与算术表达式,三、各类数值型数据间的混合运算,1、自动转换,在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的方法有两种,一种是自动转换,一种是强制转换。,整型、实型与字符型数据间可以混合运算,先转换成同一类型,再进行运算,转换规则:,char和short型转换为int型 float型一律转换为double型 整型(包括int,short,long)数据与double型数据进行运算,先将整型转换为double型,字节少的数据转换成字节多的类型,算术运算符与算术表达式,三、各类数值型数据间的混合运算,2、强制类型转换运算符,格式:(类型名)(表达式),功能:是把表达式的运算结果强制转换成类型说明符所表示的类型。,例:(double)a (将a转换成double类型) (int)(x+y) (将x+y的值转换成整型) (float)(5%3) (将5%3的值转换成float型),说明:在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。,算术运算符与算术表达式,三、各类数值型数据间的混合运算,2、强制类型转换运算符,例:强制类型转换。 #include void main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d“,x,i); 结果:x=3.600000,i=3,C运算符和C表达式,一、C运算符,1、按功能分类,(1)算术运算符 + - * / % (2)关系运算符 = = = != (3)逻辑运算符 ! & | (4)位运算符 | & (5)赋值运算符 = 复合赋值 (6)条件运算符 ?: (7)逗号运算符 , (8)指针运算符 * & (9)求字节数运算符 sizeof (10)强制类型转换运算符 (类型) (11)分量运算符 - (12)下标运算符 (13)其他 如函数调用运算符(),C运算符和C表达式,一、C运算符,2、按操作数分类,(1)一元(单目)运算符 操作数 运算符 或 运算符 操作数 (2)二元(双目)运算符 操作数 运算符 操作数 (3)三元(三目)运算符 操作数?操作数:操作数,C运算符和C表达式,二、C表达式,1算术表达式 如:2+6.7*3.5+sin(0.5) 2关系表达式 如:x0,y0 & y0 4赋值表达式 如:a=5.6 5逗号表达式 如:a=3,b=4,c=8,C语言有以下几类表达式:,C运算符和C表达式,三、有关表达式使用中问题的补充说明,产生副作用的原因:引入了具有副作用的运算符。 (1)自增自减(+、-) (2)赋值和复合赋值,在表达式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025科目一考试的真题及答案
- 湖南音乐考试题目及答案
- 体育学专业课考试题目及答案
- 急诊抢救工作制度考试题及答案
- 永州市适应性高考试题及答案
- 传统陶瓷与新型材料卫浴生产及海外企业布局试题附答案
- 智能温控节能算法-洞察与解读
- 2025年病理学问答题及病案分析(附答案)
- 幼教行业合作协议
- 2025年事业单位招聘考试综合类无领导小组讨论面试真题模拟试卷:面试考前押题卷
- 2025届四川省泸州市高三一模语文试题
- 公司基本管理制度模版(3篇)
- 第五届应急管理普法知识竞赛考试题库500题(含答案)
- 2024年医疗器械经营质量管理规范培训课件
- 电气工程及其自动化职业规划课件
- 2024年专升本考试-专升本考试(医学综合)考试近5年真题集锦(频考类试题)带答案
- GB/T 4706.23-2024家用和类似用途电器的安全第23部分:室内加热器的特殊要求
- CommVault备份软件操作手册3
- DL∕T 5863-2023 水电工程地下建筑物安全监测技术规范
- 水质 浊度的测定 浊度计法HJ 1075-2019方法验证报告
- 新部编版语文1-6年级2460个生字表(带拼音)
评论
0/150
提交评论