




已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章 基本数据类型及运算 n数据描述 n数据类型 n常量 n变量 n类型转换 n运算符与表达式 n数据输输入与输输出 C 数 据 类 型 基本类型 构造类型 指针类型 * 空类型 void 自定义类型 typedef 数值类型 字符类型 char 整型 实型 单精度型 float 双精度型 double 短整型 short 长整型 long 整型 int 数组 结构 struct 联合 union 数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 允许的操作 基本数据类型例 类型符号关键字数的表示范围所占位数 整型字符型实型 有 无 (signed)int16-3276832767 (signed)short16-3276832767 (signed)long32-21474836482147483647 16 unsigned int 065535 32 04294967295 unsigned long unsigned short16065535 有float 32 -3.4e383.4e38 有double64-1.7e3081.7e308 有char 8-128127 无unsigned char80255 需要注意的是,标准C没有具体规定以上各整型数据所占内存 字节数。只要求long型数据长度不短于int型,short型不长于 int型。具体如何实现,由各计算机系统和编译系统决定。 如:在Visual C+ 6.0中,一个short型数据占用2个字节的内 存空间,一个int型数据和一个long型数据分别占用4个字节的 内存空间。 n一般用大写字母 n是宏定义预处理命令,不是C语句 n直接常量: n整型常量 n实型常量 n字符常量 n字符串常量 n常量 n定义:程序运行时其值不能改变的量(即常数) n分类: n符号常量:用标识符代表常 n定义格式: #define 符号常量 常量 例 符号常量举例 #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); 运行结果:total=300 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*/ n说明: n+ - 不能用于常量和表达式,如5+,(a+b)+ n+ -结合方向: 自右向左 n优先级:- + - -* / % -+ - n注意+、-的副作用(p.4849) 例 -i+ -(i+) i=3; printf(“%d”,-i+); /* -3 */ j=3; printf(“%d,%d”,j,j+); /* 4,3 or 3,3 */ 例 -i+ ? i=3; printf(“%d”,-i+); j=3; printf(“%d,%d”,j,j+); 算术运算符和表达式(续) 位运算符 n位运算是以二进制位(bit)为基本单位进行的运算 n语言提供了六种位运算符: 按位取反 单目 i c= a | b; printf(“a=%d,b=%d,c=%dn“,a,b,c); /*9,5,13*/ 按位异或运算符 n00=0;10=1;01=1;11=0 n用途: n使特定位翻转 n交换变量值,不用临时变量 例: int a, b, t; t=a; a=b; b=t; /* need temporary variable */ a+=b; b=a-b; a-=b; /*possibility of overflow*/ a=b; b=a; a=b; 按位取反运算符 n0=1;1=0 n用途: n特定位清零 char c; int i; c /* 1111 0001 */ c 2; /* 0011 1100 = 60 =241/4*/ n简单赋值运算符 n符号: = n格式: 变量标识符=表达式 n作用:将一个数据(常量或表达式)赋给一个变量 n复合赋值运算符 n种类:+= -= *= /= %= = d=func(); c=d+2; 赋值运算符和表达式 n说明: n结合方向:自右向左 n优先级: n左侧必须是变量,不能是常量或表达式 n赋值转换规则:使赋值号右边表达式值自动转换 成其左边变量的类型 错误: 3=x-2*y; a+b=3; 例 float f; int i; i=10; f=i; 则 f=10.0 例 int i; i=2.56; 结果i=2; 赋值运算符和表达式(续) 例:a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) /*表达式值为5,a,b,c值为5*/ /* b=5,a=5*/ /*表达式值11,c=6,a=11*/ /*表达式值10,a=10,b=4,c=6*/ /*表达式值5,a=5,b=10,c=2*/ n赋值表达式的值与变量值相等,且可嵌套 赋值运算符和表达式(续) 赋值运算符和表达式(续) n赋值类运算符的副作用及限制 语言允许在一个表达式中使用一个以上赋值运算符。 对人的影响和副作用,易造成误解。 .程序尽可能写得明了易懂一些; .加上一些不必要的括号。 对机器的副作用,不定解。 交换律不再适用。 例: a=12; a+=a-=a*a; /*a=-264 等价于a=a+(a=a-(a*a)*/ 赋值运算时的类型转换 “=”两侧类型不一致时,要进行类型转换: n整实:截掉小数部分 n实(单、双精度)整:数值不变,存为浮点 n整char:整型低8位char 整型高8位0或符号位扩展(因机器而不同) nlong intint:符号位扩展 nintlong int:intlong 低16位 nlong intunsigned int:高位补0 n整型(字节数相同的)unsigned 整型:原样送入。 若超过整型表示范围,会出错。 nunsigned(字节数相同的)非unsigned整型: 原样送入,符号位也作为有效数值。 Page 36 include main() unsigned a; int b= -1; a=b; printf(“%un“,a); 运行结果: 65535 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 b a 例: 赋值语句 n格式: 赋值表达式; n赋值语句与赋值表达式的区别: 赋值表达式可以包含在其它表达式中, 而赋值语句不可。 例:if (a=b)0) t=a; 不可写为:if (a=b;)0) t=a; Page 38 n形式:表达式1,表达式2,表达式n n结合性:从左向右 n优先级: 最低 n逗号表达式的值:等于表达式n的值 n用途:常用于循环for语句中 例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /*a=15,表达式值60*/ /*a=15,表达式值20*/ /*赋值表达式,表达式值18,x=18*/ /*逗号表达式,表达式值18,x=3*/ /*1,2,3*/ /*3,2,3*/ 逗号运算符和表达式 计算字节运算符sizeof nsizeof 是一个单单目的编译编译 状态态运算符, 可计计算出变变量或类类型的字节长节长 度。 例: float f; printf(”%d”,sizeof(f); printf(”%d”,sizeof(int); Turbo C输输出结结果为为4和2。 n使用sizeof 可以增强程序的可移植性,使之 不受计计算机固有的数据类类型长长度限制。 运算符与表达式小结 n运算符优先级和结合性 一般而言,单目运算符优先级较高,赋值 运算符优先级低;算术运算符优先级较高,关 系和逻辑运算符优先级较低。 多数运算符具 有左结合性,单目运算符、三目运算符、 赋 值运算符具有右结合性。 n表达式 表达式是由运算符连接常量、变量、函数 所组成的式子。 每个表达式都有一个值和类 型。 表达式求值按运算符的优先级和结合性 所规定的顺序进行。 格式:putchar( c ) 参数:c为字符常量、变量或表达式 功能:把字符 c 输出到显示器上 返值:正常,返回显示的代码值;出错,返回EOF(-1) 数据输输入与输输出 nC语言无I/O语句,I/O操作由函数实现 n #include 一、数据输出 n字符输出函数 #include main( ) int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a); 运行结果:A B 例: 格式:printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数;出错,返回EOF(-1) n格式输出函数 v输出表:要输出的数据(可以没有,多个时以“,”分隔) v格式控制串:包含两种信息 格式说明:%修饰符格式字符,用于指定输出格式 普通字符或转义序列:原样输出 v格式字符: d,i x,X o u c s e,E f g,G % 十六进制无符号整数 不带符号十进制整数 十进制整数 指数形式浮点小数 单一字符 字符串 八进制无符号整数 小数形式浮点小数 e和f中较短一种 百分号本身 int a=567; printf ( “%d”,a); int a=255; printf(“%x”,a); int a=65; printf(“%o”,a); int a=567; printf(“%u”,a); char a=65; printf(“%c”,a); printf(“%s”,“ABC”); float a=567.789; printf(“%e”,a); float a=567.789; printf(“%f”,a); float a=567.789; printf(“%g”,a); printf(“%”); 567 ff 101 567 A ABC 5.677890e+02 567.789000 567.789 % l说明 u格式字符除 X E G 外均应用小写 u格式字符与输出项个数应相同,按先后顺序一一对应 u格式字符与输出项类型不一致时,输出可能出错 例 main( ) unsigned int u=65535; printf(”u=%dn“,u); 输出结果:u=-1 例 int a=3, b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b); 输出结果: 3 4 a=3, b=4 n附加格式说明符(修饰符) .n 对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数 修饰符功 能 m 输出数据域宽,数据长度 main( ) int c; printf(“Enter a character:“); c=getchar(); printf(“%c- hex%xn“,c,c); 运行结果: Enter a character:A A-hex41 n格式输入函数 格式:scanf(“格式控制串”,地址表) 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束 返值:正常,返回输入数据个数 v地址表:变量的地址,常用取地址运算符 输入:10 则 a=10 例 scanf(“%x”, 输入:11 则 a=17 n附加格式说明符(修饰符) l 修饰符功 能 h m * 用于d,o,x前,指定输入为short型整数 用于d,o,x前,指定输入为long型整数 用于e,f前,指定输入为double型实数 指定输入数据宽度,遇空格或不可转换字符则结束 抑制符,指定输入项读入后不赋给变量 例 scanf(“%4d%2d%2d”, 输入 19991015 则1999y, 10 m, 15 d 例 scanf(“%3d%*4d%f”, 输入 12345678765.43 则123k, 8765.43f 例 scanf(“%2d%*3d%2d”, 输入 1234567 则12a, 67b 例 scanf(“%3c%2c”, 输入 abcde 则ac1, d c2 n输入分隔符的指定 n一般以空格、TAB或回车键作为分隔符 n其它字符做分隔符:格式串中两个格式符间字符 例 scanf(“%d%o%x”, printf(“a=%d,b=%d,c=%dn”,a,b,c); 输入 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=12,b=24,c=36 n说明: n用“%c”格式符时,空格和转义字符作为有效 字符输入 如 scanf(“%c%c%c”, 若输入abc 则ac1, c2, b c3 n 输入数据时,遇以下情况认为该数据结束: v遇空格、TAB、回车 v遇宽度结束 v遇非法输入 如 scanf(“%d%c%f”, 若输入1234a123o.26 则 1234 a, a b, 123 c 例 int x; char ch; scanf(“%d”, ch=getchar( ); printf(“x=%d,ch=%dn”,x,ch); 执行:123 输出:x=123,ch=10 n注意输入函数留下的“垃圾” n程序举例 #include #include main( ) float a, b, c, s,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版全国性猎头公司战略合作合同下载
- 2025版保姆与老人长期护理服务合同-温馨相伴每一天
- 2025年会议中心场地租赁合同模板
- 2025版外贸出口货物风险评估与控制合同
- 2025导游劳动合同范本:含导游行为规范与奖惩措施的导游服务合同
- 2025版新能源汽车售后服务专项委托代理合同
- 基于物联网的2025年城市轨道交通智慧运维系统创新实践报告
- 咖啡连锁品牌在2025年市场布局中的社区商业饮品品牌市场潜力分析报告
- 生物信息学育种应用-洞察及研究
- 2025版通勤车辆安全驾驶培训服务合同
- T/CGAS 026.1-2023瓶装液化石油气管理规范第1部分:安全管理
- PEP人教版六年级上册英语课后辅导计划
- 餐饮劳务合同协议书样本
- 中医护理灸疗技术操作规范:督灸
- 泌尿外科手术分级管理制度
- 阿尔茨海默病药物治疗指南(2025)解读
- 报酬协议模板
- 《贵阳市公共交通场站设计导则》
- 新时代中小学教师职业行为十项准则
- 职业指导师考试题库及答案(含各题型)
- 企业融资过程中的税务问题解析
评论
0/150
提交评论