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

下载本文档

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

文档简介

1,教学要求、重点与难点,要求 1、掌握数据类型的概念; 2、掌握常量与变量的定义及异同点; 3、熟悉整型、实型和字符型常量的表示及变量的说明; 4、初步了解变量的赋初值; 5、掌握算术运算符、赋值运算符及其表达式的书写 重点与难点 1、变量与常量的定义; 2、整型、实型和字符型的常量及变量; 3、运算符的优先级; 4、算术运算符、赋值运算符及其表达式的书写。,2,10 逗号运算符和逗号表达式,内 容,1 语言的数据类型,2 标识符、常量与变量,3 整型数据,4 实型数据,5 字符型数据,6 变量赋初值,本章作业,本章小结,7 数值型数据间的混合运算,8 算术运算符和算术表达式,9 赋值运算符和赋值表达式,3,2.1 语言的数据类型,一个程序包括两个方面的内容: 一是数据的描述;二是 操作步骤(算法)。 如厨师做菜,一是配料,二是操作。 C的数据类型如下:,4,2.2 标识符、常量与变量,标识符(identifier) 所谓标识符,实际上就是一个字符序列 用途:给变量、符号常量、函数、类型等命名 语法规则: 以字母或下划线为首字符 其余可以是任意的字母、数字和下划线组成的字符序列,这个序列可以是空串 注意:C语言中大小写字母是不同的含义,长度(字符个数)不限,8个有效 C语言标识符分类: 关键字(保留字)(30个):char,int,float,double,enum,short,long,unsigned,struct,union,void, auto,extern,register,static,typedef (16) if,else,for,while,do,switch,case,default,goto,break,continue,return (12) sizeof (或size of),const 预定义符(特定符)(7个):define,include,undef,ifdef,endif,ifndef,line 一般标识符:变量、符号常量、函数、类型、文件等名称,5,常量 常量:在程序运行过程中,其值不能被改变的量 常量包括:字面常量和符号常量 常量区分为不同类型: 整型:0,345,-888 实型:349.8, -87.6 字符型:A, 0, a 符号常量: 符号常量:用一个标识符代表一个常量 例题: #define PRICE 30 main() int num=10,total; total=num*PRICE; /* 相当于total=num*30;*/ printf(“total=%dn”, total); 运行结果: total=300 注意:习惯上,符号常量名用大写 ,变量用小写,以示区别,6,变量 变量:在程序运行过程中,其值能够被改变的量 变量名:变量的名字,简称“变量名”,变量名是一个标识符 合法的变量名:x, sum, _above, class1 不合法的变量名:2x, M.D.John 注意: 变量名一般用小写字母表示 起变量名应遵循“见名知义”原则 变量名不能与关键字同名 常用: i, j, k, l, m, n 作为整型变量,用于计数器或存放总数; a, b, c, d, x, y, z 作为实型变量或数组; p, q, r, h 作为指针型变量; 变量的三要素:名字(地址)存贮单元、类型和值 变量的定义: 遵循“先定义后使用”原则 变量定义包含的四种含义: 为变量取名 说明变量类型 为变量赋初值(初始化)(可省略) 规定变量的存储类别 (可省略),7,2.3 整型数据,整型常量 C整型常数有三种表示形式: 十进制:123,456,0 八进制:以0开头 如 0123 等于十进制数83 011 等于十进制数9 十六进制:以0x或0X打头 如:0x123 等于十进制数291 0x12 等于十进制数-18,8,2.3 整型数据,整型变量,整型变量,基本型 int 16位 3276832767,短整型 short int,长整型 long int 32位 231 231 -1,无符号型,无符号整型unsigned int,无符号短整型unsigned short,无符号长整型unsigned long,9,10,2.3 整型数据,整型变量的定义及使用 变量定义形式 类型 变量名,变量列表; int a ,b ,c; unsigned short d ,e ; long f, g; 变量的使用:程序中用到的变量都必须先定义,后使用,例如: main() int age; age=20; printf(“age=%dn”,age); 运行结果:age=20,11,2.3 整型数据,整型常量的类型 1. 值在3276832767的整常数,认为它是int型, 可赋给 int 型和 long int 型变量; 2. 值超过上述范围,而在231 2311的整常数,认为它是 long int 型,可赋给 long int 型变量; 3. 只有非负的整常数可赋给 unsigned型变量, 但值不能超出该unsigned 型变量的取值范围; 4. 整常量后加一个l 或L,则认为其为 long int 型常量, 如: 123L,0L,432L 这常用于函数调用中。,12,2.4 实型数据,实型常量 十进制数形式:由数字和小数点组成如: 0.0 , 0.123, -34.6, .678 ,90. 注意:小数点必须有,且其前后数字不能同时缺省。 指数形式(科学计数法):由尾数、指数和字母e或E组成 如:123E3 代表 123103 7.234e-5 代表 7.23 10 -5 注意:E前必须有数字,E后必须为整数如E5 3.4E5.6 不合法 实型变量 单精度型(float) 32位 7位有效数字 10 -37 10 38 双精度型(double) 64位 15-16位有效数字 10 -307 10 308 定义形式:float x,y; double z,a,b;,13,2.5 字符型数据,字符常量 一般形式字符常量:用单引号括起来的单个字符。如:A,=,a 转义字符常量:用一转义字符来表示一些特殊字符(非显示打印字符) 如:n表示换行符,ASCII码为10; 其它: t Tab符,横向跳格(8格)、即跳到下一个输出区,ASCII码为 。 v 竖向跳格,(当前位置下移一行),ASCII码为11。 b 退格(回退一格),ASCII码值为8。 r 回车,(13) f 走纸换页,(12) 反斜杠字符本身 ddd ddd-到位进制所表示ASCII码值对应的字符; xhh hh-到位16进制所表示ASCII码值对应的字符; 例如:101 ASCII码为65,表示A字符 x30 ASCII码为48,表示0字符 (参见P324),14,ASCII码,对于字符数据来说, 实际上存储的是其编码。计算机中的编码使用的ASCII字符。 ASCII码 共有128个,使用整数0127表示。 10个阿拉伯数字 52个英文字母 32控制字符(非显示字符) 34个特殊字符 ASCII码对应的字符 A的值65、a的值97(差是32) 0的值48 回车键的值13、ESC键的值27 问号?的值63、*的值42,15,2.5 字符型数据,字符变量 定义形式如下: char c1,c2; unsigned char c3; 占字节数:一个字符变量在内存中占1个字节 赋值:例如 main() char c1,c2,c3; c1=O;c2=K;c3=n; printf(“%c%c%c”, c1,c2,c3); 结果:OK 注意: c2=“K”; 值域: char:-128 127;unsigned char: 0 255,16,2.5 字符型数据,字符数据在内存中的存储形式及其使用方法 字符数据在内存中存放的是其ASCII值。 例: char c1, c2; c1 = a ; c2 = b ; 则: C中,整型数据和字符型数据之间可通用 程序中,字符数据既可按字符形式输出,也可以整数形式输出。由输出格式字符串 %c 和 %d 决定 字符数据可进行算术运算,字符变量既可赋值以字符常量,也可赋以相应的ASCII值。 C的整型数据与字符数据间可相互赋值。,c1,c2,98,17,2.5 字符型数据,#include main() char c1,c2; c1=97; printf(“%c %cn“,c1,c1+1); c2=a; c2=c2-32; printf(“%c %cn“,c2,c2+1); 运行结果: a b A B,18,2.5 字符型数据,字符串常量 其一对双引号括起来的字符序列。 例:“a” , “ How do you do.”, “China” , “$123.45” C规定:在内存中,系统自动在每个字符串的结尾加上一个字符串结束标志0,以便系统据此判断字符串结束标志。所以,“a” 在内存中占两个字节。 例如:“A”: A: 注意:字符常量和字符串常量不可混淆,A,19,2.6 变量赋初值,初始化(除了静态变量和外部变量外)一般不是在编译阶段完成,而是在执行阶段处理,故等阶于赋值语句,但又有所不同。 ()例如:int i,j,k=3;float a=1.2;char c = a; 等价于: int i,j,k;float a;char c;k=3;a=1.2; c=a ()又如:int a=b=c=3;是非法的,应写成 int a=3,b=3,c=3;或写成 int a,b,c;a=b=c=3;,20,2.7 数值型数据间的混合运算,C语言中,整型,字符型,实型(包括单精度,双精度)数据可出现在一个表达式中进行混合运算。 在进行运算时,不同类型数据要先转换成同一类型,然后进行运算。转换规则如下图。 例:int i ; float f ; double d ; long e ; 则: 10 a + i * f - d / e 合法 运算次序: (1)计算 10 a, 结果为整数107 (2)计算 i * f 结果为double型 (3)整数107与 i * f 的积相加,结果为double型 (4)计算 d / e ,结果为double型 (5)将10 a + i * f 的结果与 d / e 的商相减,结果为double型,21,2.8 算术运算符和算术表达式,C运算符简介 算术运算符 * / % + - - 关系运算符 = & | 赋值运算符 = 运算符= 条件运算符 ? : 逗号运算符 , 指针运算符 * 和 & 求字节运算符 sizeof 强制类型转换运算符 ( 类型 ) 分量运算符 . 下标运算符 其它 如函数调用运算符(),22,算术运算符和算术表达式 基本算术运算符 * / %(取模或称求余) 例:7 % 3 值为 1 5 / 3 = 1, -5 / 3 = -1 5/3.0=1.66667 注意:求余运算(%)要求参与运算的量均为整型。其结果等于两数相除后的余数 算术表达式 表达式是由常量、变量、函数和运算符组合起来的式子。 一个表达式有一个值及其类型, 它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定的顺序进行。单个的常量、变量、函数可以看作是表达式的特例。 算术表达式是由算术运算符和括号连接起来的式子, 以下是算术表达式的例子: a+b (a*2)c (x+r)*8-(a+b)7 +i sin(x)+sin(y) (+i)-(j+)+(k-),2.8 算术运算符和算术表达式,23,注意:C语言算术表达式的书写形式类似于数学中的代数表达式,但有区别: (1) a * b 不能写为 ab、ab 、a.b (2) c / d 不能写为 cd (3) e - ( f + ( g - h ) / ( i - j ) ) + k ? 不能写为 e - f + ( g - h ) / ( i - j ) + k (4) 3.14 * r * r 不能写为 * r * * 2 或 3.14 * r 2 (5) sin( x ) 不能写为 sinx (6) log( x ) 不能写为 lnx log10( x ) 不能写为 log x,2.8 算术运算符和算术表达式,24,算术运算符和算术表达式 算术运算符的优先级和结合律 优先级:指表达式运算时应按运算符的优先级别高低次序进行,例: ( ) 高 * / % + - 低 如:a - b * c 相当于 a - ( b * c ) 结合律:若在一个运算对象两侧的运算符的优先级相同, 则按规定的结合方向处理。 算术运算符的结合方向是自左向右,称为 左结合律。 例: a - b + c 相当于 ( a - b ) + c main() printf(“nn%d,%dn“,20/7,-20/7); printf(“%f,%fn“,20.0/7,-20.0/7); ,2.8 算术运算符和算术表达式,25,算术运算符和算术表达式 强制类型转换运算 作用:将一个表达式转换成所需类型 形式 :(类型名)(表达式) 例:(double) a (int) (x+y) (float) (5 / 3) 结果为1. (float) 5 / 3 结果为1.66666 说明:强制类型转换时,得到一个所需类型的中间变量,而原来变量的类型未发生变化。 举例:float x=2.5; int i; i=(int)x; (int)x 结果为整型; 而x仍为float类型,2.8 算术运算符和算术表达式,26,算术运算符和算术表达式 自增,自减运算符 自增运算符记为“+”,其功能是使变量的值自增1。 自减运算符记为“-”,其功能是使变量值自减1。 可有以下几种形式: +i i自增1后再参与其它运算。 -i i自减1后再参与其它运算。 i+ i参与运算后,i的值再自增1。 i- i参与运算后,i的值再自减1。 在理解和使用上容易出错的是i+和i-。 特别是当 它们出在较复杂的表达式或语句中时,常常难于弄清,因 此应仔细分析。,2.8 算术运算符和算术表达式,27,算术运算符和算术表达式 自增,自减运算符 注意:1) 自增、自减运算符只能用于变量,而不能用于常量或表达式。如: 5+ (a+b)+ 都是不合法的。 2) +和-的结合方向是“自右向左”。如 -i+ 应理解为-(i+) 而不是 (-i)+ main() int i=8; /* 结果 i的值*/ printf(“%dn“,+i); /* 9 9 */ printf(“%dn“,-i); /* 8 8 */ printf(“%dn“,i+); /* 8 9 */ printf(“%dn“,i-); /* 9 8 */ printf(“%dn“,-i+); /* -8 9 */ printf(“%dn“,-i-); /* -9 8 */ ,2.8 算术运算符和算术表达式,28,算术运算符和算术表达式 自增,自减运算符 main() int i=5,j=5,p,q; p=(i+)+(i+)+(i+); q=(+j)+(+j)+(+j); printf(“%d,%d,%d,%d“,p,q,i,j); 这个程序中,对P=(i+)+(i+)+(i+)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。 而对于q 的值则不然,q=(+j)+(+j)+(+j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8。,2.8 算术运算符和算术表达式,29,2.9 赋值运算符和赋值表达式,简单赋值运算符和表达式 赋值运算符:= 赋值表达式:变量=表达式 赋值表达式的功能:先计算表达式的值,然后将结果赋予左边的变量。 例如:a=3 b=4 x=a+b w=sin(a)+sin(b) y=i+-j 赋值运算符具有右结合性。因此 a=b=c=5 可理解为 a=(b=(c=5) 或 c=5 b=c a=b 在C中有赋值表达式和赋值语句,但在其它高级语言中只有赋值语句,注意区别,30,2.9 赋值运算符和赋值表达式,简单赋值运算符和表达式 赋值时的类型转换:如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下: 1.实型赋予整型,舍去小数部分。前面的例子已经说明了这种情况。 2.整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。 3.字符型赋予整型,由于字符型为一个字节, 而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。 4.整型赋予字符型,只把低八位赋予字符量。 main() int a,b=322; float x,y=8.88; char c1=k,c2; a=y; x=b; a=c1; c2=b; printf(“%d,%f,%d,%c“,a,x,a,c2); 结果:107,322.0000,107,B 注意:322%256=66 B,31,2.9 赋值运算符和赋值表达式,复合赋值运算符及表达式

温馨提示

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

评论

0/150

提交评论