数据类型,运算符与表达式1.ppt_第1页
数据类型,运算符与表达式1.ppt_第2页
数据类型,运算符与表达式1.ppt_第3页
数据类型,运算符与表达式1.ppt_第4页
数据类型,运算符与表达式1.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课堂练习题:,1.C程序的基本单位是什麽? 2. C程序是由什麽构成的?。 3.一个完整的C程序至少要有什么?,函数,一个主函数和若干个函数,一个主函数,上机(编程)问题1:一个C程序有而且只能有一个main函数; 上机问题2:Turbo C集成编程环境有关目录的设置,要注意Turbo C所在的目录; (1)change dir 改成Turbo C所在的目录; (2)Options菜单下的Directories可以不设置; (3)出现编译或连接错误时,注意查看turbo C 2.0编译错误信息详解;,第二讲 数据类型,运算符与表达式 重点: 1. 常量与变量的区别,各种数据类型变量的定义与运用; 2. 标识符的命名规则。 难点: 自增、自减运算。 目标与要求:学会各种数据类型变量的定义以及各种数据类型的转换。 一个程序是由操作动作(命令)以及各命令的操作对象-数据所组成的。,C语言的数据类型: 1.基本类型 2.构造类型 3.派生类型,整型和字符型前还可以加限定词Unsigned,1基本概念 标识符:以字母或下划线开头的字母数字串给变量或常量取的名字。 注意(1)其长度不超过32,Tubor C通常前32个字符有效; (2)字母区分大小写; (3)C语言32个保留字不能作为标识符; 例如:name,I,_heigt,begin,_address12是正确的标识符; 8h,b?,g.v,c-j,k*li,fr$123,均不是正确的标识符。 一.常量:在程序运行过程中,其值不能改变的量。,EP2_1.C,常量的特点: 1。符号常量在其作用域内不可改变。 2。也不能对其进行赋值。 3。给编写和调试程序带来方便。 常量的定义格式: #define 符号常量名称 常量 常量的种类: 按表达形式可分为:直接(字面)常量和符号常量两种 例如:30,A,78.90,123e-2 均为直接(字面)常量; #define PAI 3.1415926 PAI为符号常量; 按数据类型可分为:整型常量、实型常量、字符型常量和字符串常量四种 1。整型常量: 十进制数,如1,238,67890 #define count 10 八进制数,如0267,-0736,0261 #define oct_count 010,十六进制数,如0x328,0x9ace,0x7e8 #define Hex_value 0x1a 2。实型常量: 十进制数,由整数和小数两部分组成(即数字与小数点两 部分组成)。如0.236,28.38,569.98 指数形式,如1.098768e+8 表示1.09868108 0.000126的指数形式是1.26e-4,表示1.26 10-4 注意:e(E)前面必须有数字,E(e)后面必须为整数。 3。字符型常量: 用单引号括起来的一个字符。例如a;A等。 4。字符串常量: 用双引号括起来的若干个字符。例如“about”;“Ab”;“*”等。,注意: a和“a”的区别。它们在计算机中的存储方式是不同的。字符串常量在内存中存储时,系统自动在其尾部追加一个字符串结束标志0. 0表示ASCII码 为0的字符。它既不显示也不会引起任何控制动作。 所以 “a”在内存中占用两个字节; a 0 “China”在内存中占用六个字节: C h i n a 0 a在内存中占用一个字节: a 因为每个字符常量都有一个ASCII值,因此字符常量可以像数值一样参加运算。 例如:X=A+20;相当于X=65+20。即X的值是大写字母U Y=B-6;相当于Y=66-6。即Y的值是符号 注意:C语言中可以用一个字符变量来存储一个字符常量,但是没有专门的变量来存储字符串常量。 二。变量及其定义(变量说明),1。在程序运行中,其值可以改变的量称为变量。如程序中的原始数据,中间结果及其最终结果通常用变量来存放。 2。变量名-以字母或下划线开头的字母数字串组成。以下划线开头的名称一般为系统本身所使用。用户定义不要这样做。 3。变量的值: 一个变量在内存中占据若干个字节的存储单元。在该存储单元中存储着变量所表示的数值。其值可以通过赋值语句获得。 如: int a=8; 等价于int a; a=8; 4.变量的数据类型。 在C语言中每个变量都需要为它指定一个确定的数据类型。编译时系统根据其数据类型为它分配相应地若干存储单元。 变量的数据类型可以是C语言中的任何一种数据类型。,5。变量的存储类型有4种: Auto 自动存储类型 Register 寄存器类型 Static 静态类型 Extern 外部引用类型 变量的存储类型规定了该变量的存储区域以及该变量在程序中的作用范围。变量存储类型的具体用法以后再讲。 6。变量的定义: 格式:数据类型 变量名表; 如:int a,b,c; float x,y; long int i,j,k; char ch; 变量定义的位置: 在函数体或复合语句中的任何位置; 在函数的参数定义中; 在函数体外.,7.变量的初始化. C语言中一般先定义变量,再引用.也可以在定义变量的同时对其赋予初始值,称之为变量的初始化. 例如:int a=10; float x=y=z=18.00 ; 三.数据类型转换. C 语言中允许不同类型的数据混合使用,但需要进行数据类型转换. 表达式中的类型转换 当不同类型的常量、变量在表达式中混合运算时,C编译系统将自动进行类型的转换工作.最终将它们转换为它们之中占用内存数据位最长的那一类型.整个转换过程按类型转换规则自动地一步一步进行.转换规则如下: 所有的char,short 必定转换为int类型. float也必定转换为double类型. 所有的操作数对(运算符两端的操作数),运算之前,总是将数据位“较短的”转换为与另一操作数相同的类型,结果为数据位“较长的”数据类型。转换排序为:,EP2 _2.C,intunsigned long double (char,short) float 低 高 例: 50L + 5 * a - 30 long int char float int long double double,强制类型转换: 强迫表达式的值转换为指定的数据类型。其一般格式为: (类型标识符)表达式; 例如:(float)a ; 将变量a的值强迫转换为单精度数据类型。 (int)(x+y); 将(x+y)的值强迫转换为整数类型。 注意:在强制类型转换中,产生一个中间变量,用于存放其转换后的数 值;原变量(表达式)的数据类型不变。 赋值表达式中类型的转换: 其一般格式为:变量名=表达式; 转换规则:“=”右边的值被转换为“=”左边变量所属的类型。 若右边的数据类型级别较高(数据位较长),则进行截断或取舍。 例如:main() unsigned int a; float b=12.00; long c=6457898; a=b+c; printf(“a=%u,b=%f,c=%ldn“,a,b,c); ,demo4_2.C,四.运算符 算术运算符(运算符的优先次序见附录1) +(单目运算的正号,双目运算的求和) -(单目运算的求负,双目运算的求差) *(乘法运算) /(除法运算) %(模运算或称之为求余运算);要求操作对象均为整数. 关系运算符 ,=,(右移),(按位非),|(按位或),&(按位与),赋值运算符=及其扩展(复合)赋值运算符 条件运算符?,: 指针运算符 *,如5%3(=2),87%9(=6),四.2算术表达式 用算术运算符和括号将算术对象(也称为操作数)连起来,使之成为符合C语言规则的式子. 运算对象包括常量,变量,函数和算术表达式等. 例如:a+b*18-x/8; 四.3运算符的优先级与结合性 C语言规定了运算符的优先级与结合性. 计算次序按运算符的优先级别由高到低依次进行. C语言规定了运算符的结合方向. 算术运算符的结合方向为从左到右,或称为左结合性.(具体内容见附录1) 四.4强制类型转换运算符 将一个表达式的值转换成所需要的数据类型. 如:(double)a; (int)(x+y);(float)(5%3); 四.5自增自减运算符 + +i,- -i(在使用i之前,先使i加1(或减1) i+ +,i- -(在使用i之后,再使i加1(或减1),例如:i=5; 则j=+i;其结果j=6,i=6;等价于i=i+1;j=i; 则j=i+;其结果j=5,i=6;等价于j=i;i=i+1; 注意:+和- -运算符只能用于基本数据类型的变量,不能用于其他类型的变量及任何表达式; 结合方向“右左”如:-i+ -(i+) 例1: 设i的值是5,则 j=-i+;其结果j=-5,i=6;等价于j=-i;i=i+1; 例2: 设i=3;j=5;则k=i+j;其结果 k=8;i=4;j=5.等价于k=i+j;i=i+1; k=i+j; k=(i+)+j; 例3: 设i=3; k=i+i+i+ 等价于k=(i+)+(i+)+(i+); 其结果k=9;i=6; 例4:设i=3;,k=i-i-i- 等价于k=(i- -)-(i- -)-(i- -); 其结果k=-3;i=0; 例5:设i=3; k=-i+i+-i+ 等价于k=-(i+)+(i+)-(i+); 其结果k=-3;i=6; 注意:(1)C语言编译系统尽可能多地自左向右将若干个字符组合成 运算符; (2)运算符+、-、+、-的优先级虽然相同,但是,只有 变量才可与+结合(或-)进行运算; 五.赋值运算符和赋值表达式 赋值符号”=“就是赋值运算符,其作用是将一个数据或表达式的值赋给一个变量. 如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换. 实型数据赋给整型变量时,舍去实数的小数部分。 例如:i为整型变量,则i=3.35;语句的执行结果,使i的值为3. 整型数赋给实型变量时,数值不变,但以浮点数的形式存储到变量中。 例如:将23赋给浮点数(实型)变量f时,即f=23;则此语句执行的结果, 23.000000存储到实数变量f中. 字符型数据赋给整型变量时,将字符数据(8位)放到整型变量的低8位,中,此时有两种情况: 1.如果字符为无符号的量或对unsigned char型变量赋值时,则将字符的8位放到整型变量的低8位,其高8位全补零. 例如:把376赋给整型变量i时,则i=00000000 11111110 2.如果字符为带符号的量,且字符最高位是0,则整型变量的高8位补0; 若字符最高位是1,则整型变量的高8位补1;这称之为“符号扩展”,这样做的目的是使数值保持不变. 将带符号的整型数据(int型)赋给long int型变量时,要进行符号扩展.首先将整型数的16位存放到long int型变量的低16位中,以保持数值不变. 1.如果int型数据为正值(符号位为0),则long int型变量的高16位全置0; 2.如果int型数据为负值(符号位为1),则long int型变量的高16位全置1; 3.反之,若将long int型数据赋给一个int型变量时,只将long int型中低16位原封不动存放到整型变量中.这称之为截断,即long int型的,高16位被截断了. 将unsigned int型数据赋给long int型变量时,不存在符号扩展问题,只 需将高8位补0即可. 将unsigned或非unsigned型数据赋给长度相同的unsigned型变量时,是原样照赋(连原有的符号位也作为数值一起传送). 六.复合赋值运算符 在赋值号“=”前面加上其它运算符,就可以构成复合(扩展)赋值运算符. 它专用于将某个变量和运算式进行指定的运算后的结果赋予该变量. 实际上它是一般赋值表达式的简化. 有关复合赋值运算符的运算对象,运算规则与结果,结合性如下表:,除此之外,C语言中还有以下五种关于位运算的复合赋值运算符: =, 本例中不论原先a的值是多少,则其a的结果值都是0。,3.赋值运算符按照从右到左的结合顺序。 在C语言中,将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以表达式的形式出现在其它语句中(如循还语句)。,八.逗号运算符和逗号表达式(test01.c) 逗号运算符又称为顺序求值运算符;它将若干个表达式连接起来。 如:3+5,a+b*9,7+x+y-z/8;等价于3+5;a+b*9;7+x+y-z/8; 其一般形式为:表达式1,表达式1,.表达式i,.表达式n; 整个逗号表达式的值就是表达式n的值. 例如:5+6,18-2,28-8;其值就是20. 注意:下面两个表达式的作用的差异: x=(a=3,6*5);它是一个赋值表达式,将逗号表达式(a=3,6*5)的结果值6*5 赋给x;等价于a=3;x=6*5; x=a=3,6*5;它是一个逗号表达式,包括一个赋值表达式和一个算术表 达式.x和a的值是3.等价于a=3;x=a;6*5;但是整个表达式的值是30。 由上可知:逗号表达式实际上是个复合语句,本讲小结 1.C语言标识符的概念及命名. 关键字 标识符 预定义标识符 用户标识符 (用户对变量,符号常量,自己的函数或文件指 针,进行命名,形成用户标识符.其构成规则如下: 由26个英文字母,10个数字符号和一个下划线 (63个字符的组合)组成,且第一个字符不能是数字. 大小英文字母的含义不同. 标识符中所允许包含的字符个数随不同的 C编译系统而有差异,通常都可以识别前六个字符. Turbo C前32个字符有效。,2.重点介绍了C语言的基本数据类型: int,char,float,double以及加上限定词short,long,unsigned的情况; 3.C语言的常量,变量及其数据类型,变量的说明及其初始化; 4.各种数据类型的数据在混合运算时的类型转换,包括表达式中的自 动类型转换,强制类型转换,以及在赋值表达式中的类型转换. 5.介绍了 算术运算符和算术表达式; 自增,自减运算符; 赋值运算符和赋值表达式; 逗号运算符和逗号表达式. 其中运算符的结合特性: 单目运算符、三目,双目运算符中的赋值运算符自右向左结合; 双目运算符中,除赋值运算符之外,都是自左向右结合; 6.字符型数据中的转义字符,即以“”开头的字符需要特别注意(P23表2-1) “ddd” d代表8进制数 “xhh” h代表16进制数,也就是说“ddd” 或“xhh” 只代表单个字符。例:101,x61分别对应A和a。,3. main() int x,y,z; x=y=z=3;printf(“n1:x=%d,y=%dn“,x,y); y=x+-1;printf(“2:x=%d,y=%dn“,x,y); y=+x-1;printf(“3:x=%d,y=%dn“,x,y); y=z-+1;printf(“4:z=%d,y=%dn“,z,y); x=2; x*=3+2;printf(“5:x=%dn“,x); x*=y=z=4;printf(“6:x=%dn“,x); x=y=z;printf(“7:x=%dn“,x); z=90; x=(y=z);printf(“8:x=%dn“,x); ,课堂练习:,1.x=2.5,y=4.7,a=7 则x+a%3*(int)(x+y)%2/4.0=?,2.设a=2,b=3,x=3.5,y=2.5 则(float)(a+b)/2+(int)x%(int)y=?,lx3_9.C,lx310.C,test1.C,1:x=3,y=3,3:x=5,y=4,4:z=2,y=4,5:x=10,6:x=40,7:x=4,8:x=90,2:x=4,y=2,4.若x,z均为int型变量,则执行下列语句后,z的值是? x=4;z=-x*-x*-x;,5.变量是在程序运行过程中 它的三要素是,6.以下标识符组中合法的标识符分别为:(1)B(2)D(3)A A)PAd B)scanf C)void D) a* P#d a10 max temp (2) A)P-h B)CCP C)hiy D) _isw abc float INT A)_0123 B)del_word C)List D)keep% ssiped signed *.jer wind,1,可以改变的,类型、地址和值。,(1)B,(2)D,(3)A,7.以下选项中合法的常量是?D A)Internet B)E_3 C)02x D)0xfeL,8.以下选项中合法的赋值表达式是?C d=8+a+f=d+6 B)d=(a+8)+ + C) d=(8+e,e+ +,d+9) D)d=7+e+ + =d+7,D,C,9.若有以下的变量定义: int a; unsigned b; long c; 1).语句a=-2;b=a;c=b; 则a,b,c分别是? 2).语句a=-2; b=a;c=a; 则a,b,c分别是? 3).语句c=98307L; a=c;b=c; 则a,b,c分别是? 4).语句c=98304L; a=c;b=c; 则a,b,c分别是?,则a=-2,b,c均为65534,则a,c均为-2,b为65534,15 7 0,则a为-32765 ,b为32771,则a为-32768 ,b为32768,1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1,31 15 7 0,0 0.,5).语句c=65539L; b=c; a=c; 则a,b,c分别是?,31 15 7 0,0 0.,则a和b的值均为3,10.main( ) int x=5,y=3; float f; f=x/y; printf(“f=%fn”,f); 则程序的输出结果 是?,f=1.000000,main() int x=0,z,y=z=-1; x=x-z-y; printf(“x=%dn“,x); 输出结果是:,11.以下各程序的输出结果是:,main() int x=0,z,y=z=-1; x+=z-y; printf(“x=%dn“,x); 输出结果是:,main() int x=0,z,y=z=-1; x=-x-z-y; printf(“x=%dn“,x); 输出结果是:,main() int x=0,z,y=z=-1; /*x*=-y-z-x;*/ x=-y-z-x; /*x+=-y-z-x;*/ printf(“x=%dn“,x); 输出结果是:,main() int x=0,z,y=z=-1; x=-y-z+-x; printf(“x=%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论