ch2数据类型上

上传人:san****019 文档编号:70059591 上传时间:2019-01-15 格式:PPT 页数:56 大小:631.01KB
返回 下载 相关 举报
ch2数据类型上_第1页
第1页 / 共56页
ch2数据类型上_第2页
第2页 / 共56页
ch2数据类型上_第3页
第3页 / 共56页
ch2数据类型上_第4页
第4页 / 共56页
ch2数据类型上_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《ch2数据类型上》由会员分享,可在线阅读,更多相关《ch2数据类型上(56页珍藏版)》请在金锄头文库上搜索。

1、第2章 数据类型、运算符与表达式,数据类型 常量与变量 不同类型数据间的转换 算术运算符和算术表达式 赋值运算符和赋值表达式 逗号运算符和逗号表达式,2.1 数据类型,指针类型,空类型void,定义类型typedef,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,基本数据类型,整型,字符型,实型,有,无,说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例,2.2 常量与变量,标识符 定义:用来标识变量、常量、函数等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字,讨论:判断下列

2、标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab above $123 _toDay,M.D.John,3days,#33,char,$123,ab,长度:最长32个字符 命名原则: 见名知意,采用简洁有含义的英文单词(或缩写) 不宜混淆 如1与L, o与0,标识符命名实例 stu_name, sum, total, day, count, sort,常量 在程序运行过程中,其值不能改变的量称为常量 常量可为任意数据类型 字面常量(直接常量) 整型: 12、0、-3 实型: 4.6、-1.2

3、3 字符型:a、d 字符串常量:”Hello”、”Good Morning!”,符号常量:标识符代表常量 定义格式: #define ,符号常量定义举例 #define PI 3.1415926 #define STAR *,说明:符号常量一般使用大写英文字母表示,以区别一般用于小写字母表示的变量。,符号常量使用,例 符号常量举例 #include #define PRICE 30 void main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); ,运行结果:total=300,符号常量的使用能给程序员带

4、来哪些好处?,变量 其值可以改变的量称为变量 变量也可以为任意数据类型 变量定义的一般格式 数据类型 变量1,变量2,变量n;,决定分配字节数 和数的表示范围,变量定义举例: int a,b,c; float data;,变量的使用:作强制定义,也就是“先定义,后使用”,例1 int student; stadent=19; /Undefined symbol stadent in function main,例2 float a,b,c; c=a%b; /Illegal use of floating point in function main,整型数据 整型常量,问题: 0123 = (

5、 )10 0x123 = ( )10 0Xff = ( )10,83,291,255,整型常量的类型 根据其值所在范围确定其数据类型 在整常量后加字母l或L,认为它是long int 型常量,例 12 与 12L,例 30000 为int型 65536 为long int型,整型变量 整型变量在内存中以二进制的形式存放 根据占用的字节数不同,分为不同类别,整型变量的定义,整型变量定义举例: int a,b; unsigned short c,d; long e, f;,#include void main() int a,b,c,d; unsigned u; a=12; b=-24; u=10

6、; c=a+u; d=b+u; printf(“a+u = %d, b+u = %dn”,c, d); ,运行结果:a+u = 22, b+u = -14,实型数据 实型常量 表示形式: 十进制数形式:(必须有小数点) 指数形式:(e或E之前必须有数字;指数必须为整数) 实型常量的整数部分为时可以省略,且E或e后面指数必须为整数。,十进制数形式实型常量 0.123, .123, 123.0, 0.0, 123.,指数形式实型常量 12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 , .e3,在C语言中,一个实型常数未说明则表示是double型。,字符常量 定义:用单

7、引号括起来的单个普通字符或转义字符。 字符常量的值:该字符的ASCII码值 转义字符:反斜线后面跟一个字符或一个代码值表示,如 a A ? n 101,如 A65, a97, 048 , n10,如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例: A-101-x41-65,例 转义字符举例 #include ; void main() printf(“101 x42 Cn“); printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Turbo C“); ,A B C,I say:“H

8、ow are you? “,C Program,Turbo C,注意事项: 单撇号中的字符不能是或者 一个字符占一个字节,存其对应的ASCII码 思考:9和9的区别 字符型数据可像证书一样在程序中参与相关的运算,a 32 结果为65,字符变量 字符变量存放字符ASCII码 char与int数据间可进行算术运算,例1 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */,例2 main() char c1, c2; c1=97; c2=98; printf(“%c %d”, c1, c2); ,/*ch2_003.c*/ #defi

9、ne PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn”,total,ch1); ,运行结果: total=37.500000, ch1=d,例子,字符串常量 定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符串结束标志 字符常量与字符串常量不同,例: char ch; ch=“A“;,没有字符串变量,用字符数组存放,C语言无I/O语句,I/O操作由函数实现 #include ,格式输入输

10、出函数,标准输入函数scanf,格式: scanf(“格式控制串”,地址表) 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束 返值:正常,返回输入数据个数,地址表:变量的地址,常用取地址运算符& 格式字符:d,i,o,x,u,c,s,f,e,例 scanf(“%d”, 输入:10 则 a=10,例 scanf(“%x”, 输入:11 则 a=17,附加格式说明符(修饰符),例 scanf(“%4d%2d%2d”, 输入 19991015 则1999yy, 10 mm, 15 dd,例 scanf(“%3d%*4d%f”, 输入 12345678765.43 则12

11、3k, 8765.43f,例 scanf(“%2d%*3d%2d”, 输入 1234567 则12a, 67b,例 scanf(“%3c%2c”, 输入 abcde 则ac1, d c2,输入分隔符的指定 一般以空格、TAB或回车键作为分隔符 其它字符做分隔符:格式串中两个格式符间字符,例 scanf(“%d%o%x”, 输入 123 123 123 输出 a=123,b=83,c=291,例 scanf(“%d:%d:%d”, 输入 12:30:45 则12 h, 30 m, 45 s,例 scanf(“%d,%d”,&a,&b) 输入 3,4 则3a, 4 b,例 scanf(“a=%d,

12、b=%d,c=%d”, 输入 a=12,b=24,c=36 ,2.3 不同类型数据间的转换,隐式转换 什么情况下发生 运算转换-不同类型数据混合运算时 赋值转换-把一个值赋给与其类型不同的变量时 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时转换,a 32,int age; age = 11.1,char name=a; printf(“%dn”,name);,运算转换规则:不同类型数据运算时先自动转换成同一类型,char ch; int i; float f; double d;,ch/i + f*d - (f+i),例1,显示转换 可以利用强制类型转换将一个表达

13、式转换成所需类型 一般形式:(类型名)(表达式) 例: (int)(x+y) (int)x+y (double)(3)/2 (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3,精度损失问题,2.4 算术运算符和算术表达式,C运算符简介,学习运算符应注意 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型,基本的算术运算符 + 加法运算或正值运算符 - 减法运算或负

14、值运算符 * 乘法运算符 / 除法运算符,求商,两个整数相除结果为整数 % 模运算符,求余,要求两则均为整型数据,3+5、+3,5-2、-3,3*5,5/3,7%4,例 5/2 = -5/2.0 =,例 5%2 = -5%2 = 5%-2 = 1%10 = 5%1 = 5.5%2,2,-2.5,1,-1,1,0,(),1,取模的余数符号由分子(被除数决定),算术表达式和运算符的优先级和结合性 算术表达式:用算术运算符和括号将运算对象连接起来的、符合C语法规则的式子。 求表达式的值: 先按运算符的优先级别高低次序执行; 再一个运算对象两则的运算赋的优先级别相同,则按规定的“结合方向”处理。,a*

15、b/c-1.5+a,a b * c / d,自增+、自减运算符 作用:使变量值加1或减1 种类: 前置 +i, -i (先执行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i+1或i-1),int a=3; int b=+a; int c=a+;,3,4,5,4,4,4,则:a:5,b:4,c:4。,j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,例,注意说明: 只能用于变量,不能用于常量或表达式; 结合方向“自右向左”; 优先级别: - - + - - * / % - +

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

最新文档


当前位置:首页 > 高等教育 > 大学课件

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