




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章 数据类型与运算符 标识符的概念 最基本的数据类型 运算符,语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 例: 变量名 sum _total lotus_1_2 M.D.John ¥12 3D ab void int C保留字(也叫关键字)不能当标识符用,参见教材 P39,标识符的命名规则,注意: 必须避开C语言的关键字(保留字 见书P365) C编译系统将大写字母和小写字母认为是两个不同的字符。例:int a,A; 在选择变量名和其它标识符时,应注意做到“见名知意”。 例:student_name, StudentName , StdName 为了程序的可移植性,标识符的长度最好不要超过8个字符。 习惯上,符号常量名全用大写。(变量可用大小写混写),好的编程习惯 (抄笔记),第三章 标识符的概念 最基本的数据类型 运算符,构造类型,指针类型,空类型 void,参见教材 P37,辅助记忆: int:integer char:character struct: structure enum:enumerate,3.1 C的数据类型,3.2.1 常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。,整形常量: 2 -10 浮点型常量: 2.31 -3.0 .4 字符常量: 2 a 字符串常量: ”ab” ”这是我” ”-0.02” 符号常量: #define PI 3.1415926 /*宏定义*/,3.2 数据常量与变量,常量分类,C语言中,整型常量可用不同进制表示: 1)十进制: int x= 83,y= -26; 2)八进制:数字以0开头 int a=0123 ; =1*82+2*81+3*80 =83 3)十六进制:数字以0x开头 int a= -0x1A; = -(1*161+10*160)= -26,例: 符号常量的定义与使用 #define PRICE 30/*宏定义*/ #include void main ( ) int num; num=10 * PRICE; printf(num=%dn ,num); ,运行结果: num=300,注意:不能给符号常量赋值 PRICE=40;/* 语法错误*/,回顾:内存的概念 是RAM,掉电则数据消失 以字节为单位,1个字节8位 每个字节一个编号(地址),语法格式: 数据类型 变量名;,整数型 int a, b=0x100; long x=7 , y, z=011; 实数型 float h; double s67.4; 字符型 char a1 m , a2;,技巧: 欲知变量所占内存空间的字节个数,则 printf( “%d“, sizeof(float) ); 或者 printf( “%d“, sizeof( h ) );,共六种 ,有符号整型 有符号短整型 有符号长整型 无符号整型 无符号短整型 无符号长整型,(signed) int (signed) short (int ) (signed) long (int) unsigned int unsigned short (int) unsigned long (int),注意:1.括号表示其中的内容是可缺省的。 例: long x; unsigned long y; 2. VC下变量占用的内存字节数:改教材 P43,3.3 整型变量, 区别: 有符号整形变量的最高位是“符号位”,且负数是补码形式的。 无符号整形没有“符号位”,只能表示正整数和0。 例: int x; unsigned int x;,思考: unsigned int型能存放的最大的整数是? int型变量能存放的最大的整数是?,232-1,231-1,unsigned int k = 0xFFFFFFFF;,11110111 11011001 11111110 10111111,*了解:有符号整型变量 在内存中是以二进制补码形式存放的。,*二进制补码形式 正数的补码:就是自身 int a=10; 00000000 00000000 00000000 00001010,负数的补码:该数绝对值的二进制,按位取反加1 int a=-10; 00000000 00000000 00000000 00001010 取反 11111111 11111111 11111111 11110101 加1 11111111 11111111 11111111 11110110,*使用补码的好处: 1) 使 0 有了单一的存储形式 2) 使减法变成了加法例:8-10 8的补码 + 10的补码,#include void main() int a; a= -100000*100000; printf(“%d n“, a ); ,01111111 11111111 11111111 11111111 =231-1,int a; (VC时,分配4字节空间)能表示的最大整数为:,常见逻辑错误: 数据溢出(overflow),*思考:int型变量能表示的最小的整数为:,10000000 00000000 00000000 00000000 = -231,C语言中,浮点型常量的表示方法,小数形式 指数形式,0.012 或 .12 1.2e-2 或 1.2E-2,注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数。,double a=1.8E-3, b=-12e0, c=.1e-3; double x=e3,z=3E,k=2e0.8 , y=3e(-2);,3.4 浮点型数据,计算机中 小数存储方式,定点型:小数点的位置事先已有约定,不再改变。,浮点型:小数点在逻辑上是不固定的。,浮点数优点:同样大小的空间,可以存放远比定点数取值范围大得多的数。 缺点:运算规则比定点数复杂的多,运算过程慢。,VC环境下:float类型变量占 4个字节: -3.4e38 +3.4e38 double类型变量占8个字节: -1.7e308 +1.7e308,双精度浮点数的优点: 1)比单精度浮点数 能存储更大的数或更小的数。 2)精度高 单精度浮点数的优点: 所需内存少,运算速度快于double类型 。 (这对大型应用程序中非常重要!) 举例分析: 例1) 家庭记账软件(注意:消费支出金额形如 “35.45元” ) 例2) 全球人口数字统计(注意:unsigned long变量最大值仅为42亿 ),*仅了解:浮点型数据计算后有可能产生舍入误差,运算后,float:十进制结果的前67位有效数字是准确的 double:十进制结果的前1516位有效数字是准确的, 注意:C语言中,将浮点型常量都默认为双精度型的常量。 例:float k; k=1.3; warning C4305: = : truncation from const double to float ,3.5 字符型数据,注意:一个字符变量 只能存放一个字符。 例: char c1, c2 =b; c2=c1; c1=apple;,error : too many characters in constant,warning : local variable c1 used without having been initialized,*思考: char a=3; char a=3;,char c1=a , c2=A; 等价为 c1=97 65,0 1 1 0 0 0 0 1,0 0 1 1 0 1 1 1,00000011,00110011,参见p364 ASCII码表,American Standard Code for Information Interchange,字符变量在内存中如何存储?,书eg3.6:写出运行结果,#include void main() char c1,c2,c3; c1=97; /*等价为c1=a; */ c2=98; c3=1; printf(“%c %c %cn“,c1,c2,c3); printf(“%d %d %dn“,c1,c2,c3); ,a b 97 98 1,书eg3.7:大小写字母之间的变换关系,#include void main() char c1,c2; c1=a; c2=b; printf(“%c %cn“,c1,c2); c1=c1-32; c2=c2-32; printf(“%c %cn“,c1,c2); ,a b A B, 常见题型 必须掌握, 记忆:小写字母的ASCII码 - 32 =大写字母的ASCII码,printf(“班级t姓名t学号t成绩n”); printf(“一班t张全t022229t83.5n“); printf(“十二班t王方新t116t95n“); printf(“ 01, 016 “); printf(“, “ “);,转义字符: 见书48页 (仅要求掌握以下几种 ), 不能敲键盘输入的字符,在程序中写 八进制ASCII值, t为制表符,强制显示在下一字段(屏幕上8个字符位为1个字段), 因为 “ 在字符串中具有特殊意义,所以要想作为普通字符输出,需要再添加一个转义标志。,第三章 标识符的概念 最基本的数据类型 运算符,参见p365, (加法运算符,或正值运算符,如:、 ) (减法运算符,或负值运算符,如:-.0、 -) * (乘法运算符) (除法运算符 (模运算符,或称求余运算符,两侧均应为整型数据。 例如: 的值为, 84的值为0)。,3.8 算术运算符和算术表达式,何谓表达式: 例如: *max(x,y) 概念辨析: 赋值表达式:a=10 赋值语句:a=10;,i+ 与 +i的区别: 前缀: 是i先自增一后,再使用的值; 后缀: 是先使用的值后,再自增一。 例如:已知i=3 ; 等价为:i=i+1;j=i; (所以i=,j=4) ; 等价为:j=i;i=i+1; (所以i=4,j=3), 自增运算符+ + , 自减运算符- -,学生练习:写出运行结果 #include void main() int num=0; printf(“num=%dn“,num+); printf(“num=%dt“, +num); ,运行结果 num0 num2, 常见题型 掌握分析方法,注意: 自增、自减运算符只能用于变量,而不能用于常量或表达式。因为计算结果无处可存 错误: +5 , +(x+y),优点:执行速度快 用途: 1、自增(减)运算符常用于循环语句中,使循环变量自动加。 2、也常用于指针变量,使指针指向下一个地址。,好的编程习惯:(抄笔记) 为了清晰运算的先后顺序,建议多用()。 例如:不要写成i+j的形式,而应写成 (i+)+j, 自动转换规则(见教材P54) 级别高 doublefloat 级别低 intchar,3.7 各类数据类型的混合运算,不同类型的数据做运算时,系统会自动转换成精度最高类型,然后进行运算。,例:10+ B + 65.1 * 3,思考:怎样得到1.66666这个值? ,=1,必须改为 5.0/3 或 5/3.0,强制类型转换运算符:将一个表达式转换成所需类型。 格式: (类型名)表达式 (float)(5%3) (int)(3.9+4.9) (int)3.9+4.9, 小结:共有两种类型转换 1)运算时不必用户指定,系统自动进行的类型转换,如3+6.5。 2)当自动类型转换不能实现目的时,程序员强制要求进行某种类型转换,如 b= (int)a % 3 ; float k= (float)1.3 ;,表达式的值为: 2.0000,表达式的值为: 8 (规则:8.8小数甩掉),表达式的值为: 7.9000,编程经验:如何四舍五入?(int)( x +0.5) / 先加0.5,赋值表达式: 变量= 表达式 最常见的语法问题: 符号常量=55; /错,常量在运行中不能改变值!,3.9 赋值运算符和赋值表达式,int a=b=c=5; /错,应改为:int a=5,b=5,c=5; 或者改为:int a,b,c; a=b=c=5 ;,printf(“%d”,a=b+4); /语法正确,但可读性差,*高精度数被赋给低精度变量,会舍弃什么? 例:float f=1.6f; int i; i=f;/系统自动舍弃实数的小数部分,且会语法警告 *长字节整数被赋给短字节整数变量,会舍弃什么? 例:int a=300;char c; c=a; /系统自动舍弃高位(c被赋值为44) 注意:这些都有可能引发逻辑错误。 所以需了解一下.( *各种情况总结在书P6062),复合的赋值运算符,+=,-=,*=,/=,%=, =,&=,=,|=,作用:能提高编译效率(逆波兰式 )。 不建议初学者使用,但要求能读懂。,凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。,*3.10 逗号运算符和逗号表达式,逗号运算符:,格式: 表达式,表达式,,逗号结合方向为自左向右,所以先求解表达式,再求解表达式,。 整个逗号表达式的值,是最后一个表达式的值。,例1: *5,* 该逗号表达式的值为60。,#include int main( ) int add1, add2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年营养与食品安全专业考试题目及答案
- 2025年社会工作者考试试卷及答案
- 2025年生物科学专业相关试题及答案
- 2025年生物技术与工程考试试卷及答案
- 2025年核工程师考试试题及答案
- 2025年环境保护与可持续发展考试试题及答案
- 万科管家测评题库及答案
- 徐州市大许中学2024-2025高二年级数学4月阶段测试试卷答案
- 2025年成品浆板包装输送系统合作协议书
- 字节跳动企业管理分析
- 人工智能导论学习通超星期末考试答案章节答案2024年
- 人工智能通识教程 第2版 课件全套 周苏 第1-15章 思考的工具- 人工智能发展
- 2024年河南住院医师-河南住院医师口腔科考试近5年真题集锦(频考类试题)带答案
- 人教部编版七年级语文上册《散步》示范课教学课件
- 2024小红书影像赛道赚钱趋势详解
- 《液压传动与气动技术》课后习题答案(大学期末复习资料)
- 2024年生态环境执法大练兵比武竞赛理论考试题库-上(单选题)
- 大学生网络安全教育筑牢安全网络防线课件
- (高清版)WS∕T 389-2024 医学X线检查操作规程
- 环卫承包协议
- 运输企业安全生产责任制制度
评论
0/150
提交评论