当c语言表达式中同时有字符 整数,C语言第二章数据类型、运算符与表达式A.ppt...

C语言第二章数据类型、运算符与表达式A.ppt

C语言程序设计,第2章 数据类型、运算符与表达式,本章主要学习任务,C的数据类型; 2.常量、变量; 3. 常用基本数据类型的表示、机内存储、变量分类; 4. 数值型数据混合运算及类型转换规律。,2.1 C的数据类型,数据类型数据的存在或组织形式 基本类型 指针类型 构造类型 空类型,整型 字符型 实型 枚举型,单精度型 双精度型,数组类型 结构体类型 共用体类型注意C语言中的数据有变量与常量,它们分别属于上述这些类型。,1、不同的数据类型有不同的取值范围。 2、不同的数据类型有不同的操作。 3、不同的数据类型即使有相同的操作有时含义也不同。 4、不同的数据类型对计算机可能出现的错误不同。,2.2 常量与变量,一、常量 字面常量 符号常量 (用标识符代表) 定义方法 define PI 3.1415,不是C语句,不必在行末加分号。 该命令是用标识符代替一个字符串,不作正确性检查 使用符号常量的好处 含义清楚、见名知意。 修改方便、一改全改。,二、变量 变量必须先定义后使用 变量名、变量值、存储单元的关系 标识符标准 1、组成字母、数字、下划线,且首字符不能为数字 合法abc, _321, _1a,非法 2aa, ac,_c.9 2、长度 3、大写小写不同 SUMsum 4、选择标识符的时候要“见名知意”,符号常量与变量的关系 符号常量值在作用域内不能改变,不能被再赋值;常用大写 变量值是可以改变,可以多次赋值的;常用小写,2.3 整型数据,一、整型常量 十进制整数 八进制整数 十六进制整数 注C语言整常数没有二进制整数形式,二、整型变量 内存中的存放形式 以二进制补码形式存放 每个基本整型变量在内存中占4个字节VC环境中 整型变量的分类 基本类型 int 可加修饰符short 、long、signed、unsigned,整数类型,3. 整型变量的定义 定义格式数据类型名 变量名; 可定义多个相同类型的变量。各个变量用“,”分隔。类型说明与变量名之间至少有一个空格间隔。 最后一个变量名之后必须用“;”结尾。 变量说明必须在变量使用之前。 可以在定义变量的同时,对变量进行初始化。,4. 整型数据的溢出 整型数最大允许值1,最小允许值-1,会出现什么情况 例短整型数据的溢出 void main short a32767,b; ba1; printf“ad,bdn“,a,b; ,三、整型常量的类型 整型常量赋值给整型变量时,如何匹配 值在-3276832767范围内的整数,可以赋值给int和short int 、long int型变量。 如果值超过了以上范围,在-21474836482147483647范围内,可以赋值给int、long int型变量。,2.4 实型数据,一、实型常量 十进制小数形式 .123、123.、123.0 指数形式e之前必须有数字,e后面指数必须是整数 规范化的指数形式字母e之前的小数部分中,小数点左边应有且只有一位非零数字,二、实型变量 实型数据在内存中是以指数形式存放的 实型变量的分类 单精度 float 4字节 双精度 double 8字节 长双精度 long double 10字节 3. 实型数据的舍入误差 因为实型变量的有效位以外的数字将被舍去,由此会产生误差,void main float a; double b; a33333.33; b33333.33333; printf“af,bfn“,a,b; 三、实型常量的类型 实型常量可以赋给float, double, long double ,按变量类型截取实型常量中相应的有效数字位数,注意 不要试图用一个实数精确表示一个大整数,记住浮点数是不精确的。 实数一般不判断“相等”,而是判断接近或近似。 根据要求选择单精度、双精度。,2.5 字符型数据,一、字符常量 直接用单引号括起来, 使用字符的转义表示法表示(ASCII码表示) 特殊字符 预先定义的一部分常用的转义字符。如n 换行,t水平制表。,转义表示格式ddd或xhh其中ddd,hh是字符的ASCII码,ddd八进制、hh十六进制。 注意不可写成0 xhh或0ddd整数。,二、字符变量 字符型变量是用来存放字符数据,同时只能存放一个字符。 定义形式char aa,bb; 所有编译系统都规定一个字符变量在内存中占一个字节。 三、内存中的存储形式 以字符的ASCII码,以二进制形式存放,占用1个字节。,字符型数据和整型数据之间可以通用(当作整型量)。具体表现为 可以将整型量赋值给字符变量,也可以将字符量赋值给整型变量。 可以对字符数据进行算术运算 一个字符数据既可以以字符形式输出,也可以以整数形式输出。 注意字符型数据作为整数使用范围 0-255(无符号) -128-127(有符号)。,例给字符变量赋以整数(字符型、整型数据通用) main /* 字符a的各种表达方法 */ char c1ax61141 char c50 x61; char c60141; printf“c1c,c2c,c3c,c4c,c5c,c6cn“,c1,c2,c3,c4,c5,c6; printf“c1d,c2d,c3d,c4d,c5d,c6dn“,c1,c2,c3,c4,c5,c6; ,四、字符串常量 字符串常量是一对双引号(“”)括起来的字符序列。 注意 字符常量与字符串常量。如“a”和a。 C规定以0(ASCII码为0的字符)作为字符串结束标志。 不能将字符串赋给字符变量。 C语言没有专门的字符串变量,如果想将一个字符串存放在变量中,可以使用字符数组。,2.6 变量赋初值,C语言允许在定义变量的同时使变量初始化。 可以使被定义的变量的一部分赋初值 对几个变量赋同样的初值 int a3,b3,c3; 错误的赋值表示int abc3;,2.7 各类数值型数据的混合运算,整型、实型、字符型数据之间可以混合运算 进行运算时,不同类型的数据先转换成同一类型,然后进行计算 转换的方法 自动转换(隐式转换) 强制转换。,1.自动动转换(隐式转换) 混合运算时,由编译系统自动完成。转换规则(参看图2-10) 赋值运算,赋值号右边的类型转换为左边的类型。这种转换是截断型的转换,不会四舍五入。 2.强制转换 一般形式(类型说明符)(表达式) 功能把表达式的结果强制转换为类型说明符所表示的类型。,例如inta 将a的结果强制转换为整型量。 intxy 将xy的结果强制转换为整型量。 floatab 将a的内容强制转换为浮点数,再与b相加。 说明 类型说明和表达式都需要加括号(单个变量可以不加括号) 无论隐式转换,强制转换都是临时转换,不改变数据本身的类型和值。,例强制类型转换 void main float f5.75; printf“intfdn“,intf; printf“ffn“,f; ,2.8 算术运算符和算术表达式,C语言运算符控制语句和输入输出以为的基本操作都作为运算符处理 P31 表达式使用运算符将常量、变量、函数连接起来,构成表达式。 一、算术运算符 ,-,*,/, 1.两个整数相除,结果为整数,舍入方式为“向零取整” 2.求余运算,两侧均应为整型数据,余数的符号与被求余数符号相同。,二、算术表达式 1. 算术表达式用算术运算符将运算对象连接起来的、符合C语法规则的式子。 2. 运算对象可以是常量、变量、函数等。 合法的C表达式a*b/c-1.5a 注意 C语言算术表达式的乘号(*)不能省略 C语言表达式中只能出现字符集允许的字符。 C语言算术表达式只使用圆括号改变运算的优先顺序(不要指望用)。,3.(算术)运算符的优先级与结合性P.325附录 C语言规定了运算符的“优先级”和“结合性”。 优先级别相同,则按规定的“结合方向”处理。 左结合性 右结合性 对于复杂表达式为了清晰起见可以加圆括号“()”强制规定计算顺序。,四、自增、自减运算符 i,i i,i 注意 前置运算i,i,先自增、减,再参与运算; 后置运算i,i,先参与运算, 再自增、减。 例如i3,分析ji; ji; 自增、减运算符不能用于常量或表达式。,五、表达式使用中的问题 1.表达式中子表达式的求值顺序; 2. C编译系统在处理时尽可能多地将若干字符组成一个运算符(在处理标识符、关键字时也按同一原则处理); 3. 调用函数时,实参的求值顺序。,2.9 赋值运算和赋值表达式,一、赋值运算符 赋值符号“”就是赋值运算符 二、类型转换 赋值运算时,当赋值运算符两边数据类型不同时,先将赋值号右边表达式类型转换为左边变量的类型,然后赋值。,1.实型数据赋给整型变量 2. 整型数据赋给实型变量 3.单双精度常量赋值给实型变量 4.字符型赋给整型变量 5.整型数据赋给字符型变量,三、复合的赋值运算符 “”之前加上其他二元运算符,构成复合的运算符 a3;对应于aa3; 四、赋值表达式 变量表达式 将赋值运算符右侧的“表达式”的值赋给左侧的变量,赋值表达式的值就是被赋值的变量的值,2.10 逗号运算符和逗号表达式,逗号表达式用逗号将两个表达式连接起来 形式 表达式1,表达式2 求解过程 自左向右,先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,可以扩展到N个表达式 优先级所有运算符中优先级最低 例a3*5,a*4 注意函数参数也是用逗号来分隔的,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值