




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第三章 数据类型、运算符和表达式,词类之一 常量 词类之二 变量 词类之三 运算符 词类之四 表达式 各种词类的数据类型 3.1 C语言的数据类型 数据类型:是指数据在计算机中存放的形式。 不同类型的数据有不同的加工方法。 C语言的数据类型分类 参看下表。,2,C语言的数据类型表 带符号整型 (简称整型) 带符号整型 带符号短整型(简称短整) 带符号长整型(简称长整) 整型 无符号整型 (简称无符号整型) 无符号整型 无符号短整型(简称无符号短整) 无符号长整型(简称无符号长整) 基本类型 单精度型 实型 双精度型 字符型 数据类型 数组型(字符串型) 构造类型 结构型 共用型 指针型 空类型,3,3.2 常量与变量 一、常量与符号常量 (1)常量 直接写在程序清单中的数据,分为整型、实型、字符型、字符串。 (2)符号常量 用名字来替代常量。 【定义方法】#define 符号常量名 常量 【注】符号常量名:用户任取的一个标识符。 标识符 :字母开头的字母、数字、下划线组成,长度8。 符号常量通常用大写字母组成,以便区别其他的对象,如变量名。 符号常量性质是常量,不能象变量那样给其赋新值。 二、变量 (1)变量 利用数据定义语句在程序中定义的对象,可以存放数据。 (2)变量名 标识符(通常用小写字母组成) ,在定义时确定的。 (3)变量值 变量中存放的数据 (4)变量数据类型 变量中能存放的数据的类型,在定义时确定的。 【注】变量名是区分字母大小写的!如ccw、Ccw、CCw、CCW是不同变量名。 标识符不能是关键字(C语言语句中使用的英语单词) C语言的关键字请参考附录B,P365(后续课程会一一介绍)。,4,3.3 整型数据 一、整型常量及其表示方法 【复习二、八、十、十六进制的转换方法】 【表示方法】有3种。 【介绍二十进制快速转换法加减位权法】 十进制整数 通常形式的整数 例如 +12、 -12、 12。 八进制整数 以0开头的八进制整数 例如 +012、 -012、 012。 十六进制整数 以0x开头的十六进制整数 例如+0x12、-0x12、0x12。 二、整型变量 【作用】存放整型数据。 【定义方法】存储类型符 数据类型符 变量名1=初值,变量名2=初值,.; 其中:方括号中内容是可以省略的,变量名是用户给出的标识符,初值是常量。 数据类型符可以是下列任一种: 整型 短整型 长整型 无符号整型 无符号短整型 无符号长整型 int short long unsigned int unsigned short unsigned long 字节数 4(2) 2 4 4(2) 2 4 【功能】定义某种数据类型的变量,并赋予初值。 【注】int、unsigned int在TC中为2字节,在VC中为4字节。 三、整型常量的数据类型 只有带符号短整和长整型,自动按照下列书写结果(数值范围)识别。 (1)短整型常量 数值范围在-3276832767之间的整数。 例如,12、32767、32767。 (2)长整型常量 数值范围不在-3276832767之间的整数; 或其后写字母L、l。 例如,-32769、32768、40000;1L、-2L。,5,3.4 浮点(实)型数据 一、浮点型常量的表示方法 【表示方法】(1)普通的十进制实数,带小数点。如0.0、-123.、.456 (2)指数形式(在字母E或e的后面写上10的方次),如12.3E3、1e-5。 二、浮点型变量 【定义方法】存储类型符 数据类型符 变量名=初值,.; 其中:数据类型符 可以是下列任一种: 单精度浮点型 float 占4字节 范围:10-3710+38 (7位有效数字) 双精度浮点型 double 占8字节 范围:10-30710+308(16位有效数字) 变量名 用户给出的标识符,初值是常量。 【功能】定义某种数据类型的变量,并赋予初值。 【注】浮点型常量不区分单、双精度。 赋值时有效数字超出将截去多余数字。 例如,赋予单精度实型变量时, 1234.56789变成1234.567。 1234567890.0变成1234567000.0 3.5 字符型数据 一、字符常量 【表示方法】 (1)可显示字符。用单引号()括住单个字符。 如0、 A、 a。 (2)所有字符(包括不可显示字符)。 用单引号括住“转义字符”,常用转义字符参看右表。,6,二、字符型变量 【定义方法】存储类型符 数据类型符 变量名=初值,.; 其中:数据类型符只能是char,占用的内存字节数是1。 变量名是用户给出的标识符,初值是常量。 【功能】定义字符型的变量,并赋予初值。 【注】字符型数据在内存中实际存放的是对应字符的ASCII代码值(0127)。 因此,字符型数据可以看成带符号或无符号的整型数据。 而整型数据只要不超出范围(0127),也可以看成是字符型数据。 【例】#include “stdio.h“ 说明:整型、实型、字符型合称数值型 void main() int i; char c=97; i=A; printf(“%c,%dn“,c,i); /* 程序是正确的,输出结果是:a,65*/ 三、字符串常量(简称字符串) 【表示方法】双引号(“)括住的若干个字符(包括转义字符)。 【例】 “、“1“、“1.23“、“abc“、“n“、“nnxyz“ 。 【注】(1)字符串在内存的存放规则是:按顺序依次存放字符串中每个字符的 ASCII代码值,最后自动存放一个“0”,称为字符串结束标记符。 (2)字符串长度字符串中的字符数目。 (3)字符串占用的内存字节数字符串长度1。 (4)无字符的字符串称为空字符串,简称空串。空串长度为0,占用1个字节。 (5)字符串与字符常量是不同的。 a和“a“是不同的数据类型,占用字节数不同。 (6)C中没有字符串变量,是用字符型数组来存放的,以后介绍。,7,3.6 变量赋初值 【方法】在定义变量时,给出初值。 【注】初值是常量或已经定义过的符号常量、或由他们组成的表达式(常量表达式), 其数据类型与变量的数据类型要一致。 【例】#define PI 3.14159 int i=10,j=-6+1,k; float f=1.2345,s=0.0-0.1,x1,x2=PI+1; char c1=a,c2=A+1,c3; 3.7 各种基本数据类型的数据之间混合运算 【规则】 double float 横向:必定先转换 纵向:沿箭头按需要转换 表达式计算时 long 就长不就短 unsigned int short、char 【例】设有定义: char c=1; int i=2; long l=3L; float f=4.0; 计算“c*i/l+f”的过程是: (1)c*i c转换成int型,和i相乘,运算结果是int型 (2)(c*i)/l c*i转换成long型,和l相除,运算结果是long型 (3)(c*i/l)+f (c*i/l)和f转换成double型,相加,运算结果是double型 最后对基本类型的数据给一个小结表。,8,基本数据类型的小结,9,3.8 算术运算符与算术表达式 基本算术运算符(+ - + - * / %) 一、C的运算符 算术运算符 增1减1运算符(+ -) 关系运算符( = = .) 指针运算符(& * + -) 注:掌握运算符必须掌握:运算符、对象数目、运算符的位置、对象的类型、 运算规则、运算结果的类型、 优先级、结合性。,10,二、算术运算符 【说明】 (1)优先级:单目 双目 (3)模运算结果符号与被除数相同。 *、/、% 、 例如,28 10 8(商为2) (2)除运算的结果与除数、被除数的数据类型有关。 28-10 8(商为-2) 两个都是整型,则为整除,只取商的整数部分。 -28 10-8(商为-2) 例如,28/102 -28-10-8(商为2) 28.0/10=2.8 28/10.0=2.8,11,三、强制运算符 【例】 (float)(7%3)的结果是1.000000 7位有效数字 (double)(5/2)的结果是2.000000000000000 16位有效数字 (int)(3.7+2.2)的结果是5 【注】其后无括号,仅对第一个数据起作用,如(int)3.7+2.2的结果是5.2 四、自增自减运算符,12,【例】#include “stdio.h“ void main() int k=3; printf(“%dn“,+k); 输出结果是4,k为4 printf(“%dn“,k+); 输出结果是4,k为5 【注】(1)注意理解后缀+、-的加减1的时间。 i=3; k=i+; k为3、i为4 i=3; k=(i+)+(i+)+(i+) k=3+3+3=9、i=3+1+1+1=6 理解:后缀的+和-是所在的表达式全部计算结束后,再进行加减1的运算。 (2)自左向右尽可能地选取多个运算符组成复合运算符。 k=1; k+k+k 相当于(k+)+(k+)+k,结果是3,k为3。 (3)+和-只能作用于变量,不能作用于表达式。 k=1; +k相当+(+k),其中(+k)是正确的,但+(+k)是错误的。 (4)注意TC中函数参数的计算顺序是自右向左的(VC中无此规定)。 k=1; printf(“%d,%d“,k,k+); 输出结果是2,1。 五、算术表达式 表达式: 用运算符将合适的运算对象连接起来的式子。 算术表达式: 用算术运算符将合适的运算对象连接起来的式子。 表达式值 : 表达式的最终运算结果值。 表达式类型: 表达式值的数据类型、最后一个运算符的类型。 运算符的运算对象: 可以是常量、变量、表达式(常量、变量也是表达式)。 表达式运算的转换规则:就长不就短。,13,3.9 赋值运算符与赋值表达式 一、赋值运算符 【注】(1)前一个运算对象只能是变量,后一个运算对象只能是表达式(或常量、变量)。 (2)赋值时的转换规则是:就左不就右。 当字节数少的值赋予字节数多的变量时,不会出错;反之,可能会出错。 【例】int k; k=3.99; k为3。 float f; f=3; f为3.000000 unsigned short u=65535; short k; k=u; k为-1【注:带符号整数与无符号整数】 long l=32768; short s; s=l; s为-32768,14,二、复合赋值运算符 【注】后5个将在第12章“位运算”介绍。 【例】int k=3; k-=3; k为0。 int k=3; float f=3.0; f*=3; f为9.000000 k*=1+2; int k=-5; k/=2; k为-2 相当于“k=k*(1+2);” long l=5; l%=8L; l为5L,15,三、赋值表达式 赋值表达式: 用赋值运算符连接变量和表达式组成的式子。 赋值表达式的值: 赋予左边变量的值。 赋值表达式的类型: 左边变量的数据类型。 【注】(1)赋值表达式也是表达式,可以出现在赋值运算符的右边。 例如,int k1=1,k2=2,k3; k3=k2=k1=5; k3=k2=k1=5相当于k3=(k2=(k1=5); 结果k3、k2、k1均为5。 注:定义变量时的初值只能是常量(或常量组成的表达式) 下列定义语句是错误的:int k1=k2=k3=5; (2)赋值运算符的左边只能是变量,不能是表达式。 例如,int k1=1,k2; k2=k1+2=3; k2=k1+2=3相当于k2=(k1+2)=3),红色赋值运算符的左边是表达式。 【例】int a=2; 计算表达式“a+=a-=a*a”和变量a的值。 a+=a-=a*a相当于a+=(a-=a*a)。 先算a-=a*a,相当于a=a-(a*a),结果是-2,a是-2。 再算a+=(-2),相当于a=a+(-2),结果是-4,a是-4。 3.10 逗号运算符与逗号表达式 一、逗号运算符 运算符是“,”; 双目中缀、运算对象是表达式。 运算规则是先计算左边的表达式,再计算右边的表达式。 运算结果是右边表达式的值;类型是右边表达式的数据类型。 结合性是自左向右的。,16,二、逗号表达式 逗号表达式: 用逗号运算符连接两个表达式组成。 逗号表达式的值: 右边表达式的值。 逗号表达式的类型:右边表达式的数据类型。 【注】不是所有的逗号都是逗号运算符。 例如,int k=5,j=6; printf(“%d,%d“,k,j+1); 【说明】运算符的优先级:+、 - 强制 算术 赋值 逗号 各种赋值运算符是同级的、多个逗号运算符也是同级的。 【例】3+5,4+2,3+1; 逗号表达式值为4。 int a,b,c; a=3,b=4,c=5; 逗号表达式值为5,变量a、b、c值依次为3、4、5。 int a,b,c; c=(a=3,b=4); 赋值表达式值为4,变量a、b、c值依次为3、4、4。 int x,a; x=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电梯安全使用管理操作规程
- 供应链管理库存控制最佳实践方案
- 农机装备智能化检测-洞察及研究
- 2025湖北经济学院后勤集团招聘1人考前自测高频考点模拟试题及答案详解1套
- 气胸影像学特征与胸膜粘连关系探讨-洞察及研究
- 2025年河北沧州泊头市中医医院招聘专业技术人员29名考前自测高频考点模拟试题及答案详解(新)
- 容错机制与系统容灾能力-洞察及研究
- 2025贵州黔南州都匀市中小企业融资担保有限责任公司拟聘用人员模拟试卷附答案详解(模拟题)
- 数字矿山地质建模-洞察及研究
- 2025年山东师范大学第二附属中学第二批公开招聘人员(11名)考前自测高频考点模拟试题及答案详解(名校卷)
- 中医课题申报书的范文怎么写
- 2025年公基常识题及答案
- 水暖专业试题及答案
- 诺如病毒胃肠炎诊疗方案(2025年版)解读学习课件
- 学校大班额化解实施方案
- 农业综合行政执法大比武试题库(试题及答案)
- 国企新员工入职纪检培训
- 2025年超细氢氧化铝行业研究报告及未来行业发展趋势预测
- 肺康复护理进展
- 统编版(2024)八年级上册道德与法治5.2《诚实守信》教案
- 2025版煤矿安全规程学习培训课件
评论
0/150
提交评论