数据类型及运算规则.ppt_第1页
数据类型及运算规则.ppt_第2页
数据类型及运算规则.ppt_第3页
数据类型及运算规则.ppt_第4页
数据类型及运算规则.ppt_第5页
已阅读5页,还剩77页未读 继续免费阅读

VIP免费下载

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

文档简介

通知 n在计算中心机房,安排C语言集中上机,专 人辅导。 n1.从第4周开始到第11周,每周1、周2的 下午和晚上是C语言集中上机时间(不能 做其他事),现场有老师辅导.其他时间没 有辅导老师 n2.要求学生根据自己情况选一时间段到 计算中心上机.学生凭机票入机房,课程 内免费机票在学院领取。 1 2 本章要点本章要点 l l 数据的描述规数据的描述规 则则 l l 数据的操作规数据的操作规 则则 3 第节 第节 第节 第节 第节 第节 第节 数据与数据类型 基本数据类型及其表示 算术运算与赋值运算 关系运算与逻辑运算 位运算 其它运算 混合运算及数据类型转换 4 3-13-1数据与数据类型数据与数据类型 程序设计语言的基本规则包括 l 常数 l 变量 l 运算符 l 表达式 l 函数 把自然语言描述问题的方式转把自然语言描述问题的方式转 换为换为C C语言的形式表达给计算机语言的形式表达给计算机 表达式 常数 变量 函数 运算符 5 常数 3、5 和 3.6 的存放空间是否相同? 变量 a 如何表示?如何存放? 计算机如何知道 3.6 和 a 之间的关系? 3/5 和 sin x 如何输入?如何存放? 计算机如何识别“=”?运算结果放在哪里 ? 计算机完成上述计算,首先要 解决数据的输入和存放问题 6 n n 程序的任务是对数据进行处理,数据程序的任务是对数据进行处理,数据 是程序处理的对象,而运算符是施加是程序处理的对象,而运算符是施加 给这些数据的操作。给这些数据的操作。 n n 数据和运算符是表达式的基本元素数据和运算符是表达式的基本元素 数据的存储 数据的操作 7 C C语言语言的数据类型的数据类型 : 数据类型数据类型 构造类型构造类型 指针类型指针类型 空类型(空类型(无值类型)无值类型) voidvoid 枚举类型枚举类型 enumenum 数组类型数组类型 结构类型结构类型 structstruct 联合类型联合类型 unionunion 基本类型基本类型 整型整型 intint 字符型字符型 charchar 实型(浮点型)实型(浮点型) 单精度实型单精度实型 floatfloat 双精度实型双精度实型 doubledouble 8 3-2 3-2 基本数据类型及其表示基本数据类型及其表示 1、常量 在程序运行中,其值保持不变的量称为常量 整型 100,125,-100,0 实型 3.14 , 0.125,-3.789 字符型 a, b,2 l常量的表示方法: 一、计算机语言表示数据的基本形式 9 2、变量 在程序运行过程中,其值改变的数据称为 变量 u 变量通过变量名标识,变量名和内存中变量名和内存中 的存储单元相对应。编写程序时通过变量名的存储单元相对应。编写程序时通过变量名 来存、取存储单元。来存、取存储单元。 u 变量必须先定义,后使用 变量 memory a88 1000H 1001H 1002H 256 12 10 1.变量名由字母 A、B、Z、a、b、 、z,数 字 0、1、 、9 和下划线 _ 组成。 2.变量名的第一个字符必须是英文字母或下横线。 3.不能用系统中的关键字作为变量名 4.变量名中的字母是区分大小写的。 sum、stu_name、_age、Lts_1_2、a2 32c、x.y、start+9、c2.0 NAME name 表示两个不同的标识符。 变量名的规定变量名的规定 11 C语言是一种强制定义型语言, 因此,在C语言中,要求对所有用到 的变量作强制定义,也就是说,所 有变量应当先定义,后使用,以便 编译系统在编译时对变量按其类型 分配响应的存储单元。 变量的定义:变量的定义: 12 变量的定义格式:变量的定义格式: 类型说明符 变量名列表; 例: int a, b, c; char ch; float x, y; 13 二、整型数 据 整型数据包括整型常量 和整型变量, 整型数据 以二进制补码形式存储 n n 整型常量的不同数值表示方法整型常量的不同数值表示方法 1010进制:进制:0 09 9 8 8进制:进制:0 07 7,以,以0 0开头开头 1616进制:进制:0 09 9,A AF/F/a af f,以以0 0x x或或0 0X X开头开头 1.整型常量 例例 100100、-8-8、0 0;010010、024024;0 0x38x38、0X1F0X1F n n 整型常量的类型整型常量的类型 w w 根据值大小默认类型根据值大小默认类型 w w 在常量后面加在常量后面加l l或或L L,表示表示long long intint型型 例如:例如:123123L L,0L0L,432l 432l 都是都是long long intint型常量型常量 14 l 整型变量的整型变量的形式形式 基本整型 短整型 长整型 无符号整型 无符号短整型 无符号长整型 int short int long int unsigned int unsigned short unsigned long l 占存储空间占存储空间 占内存字节数 2 2 4 2 2 4 .整型变量 15 l 整型变量的整型变量的定义定义 例如例如:intint i, j ; i, j ; long k, m; long k, m; unsigned int x,y; 格式:类型说明符格式:类型说明符 变量列表;变量列表; 16 l l 整型数据的取值范围整型数据的取值范围 类型类型 类型说明符类型说明符 长度长度 数的范围数的范围 基本型基本型 intint 2 2字节字节 -32768-327683276732767 短整型短整型 short 2short 2字节字节 -2-215 15 2 2 1515-1 -1 长整型长整型 long long 4 4字节字节 -2-231 31 2 2 3131-1 -1 无符号整型无符号整型 unsigned unsigned 2 2字节字节 0 06553565535 无符号短整型无符号短整型 unsigned short unsigned short 2 2字节字节 0 06553565535 无符号长整型无符号长整型 unsigned long unsigned long 4 4字节字节 0 0(2 232 32-1 -1) 17 l 整型变量的存放形式整型变量的存放形式 数据在计算机内存中是以二进制数形式存 放的。 实际上,在计算机当中数据是以补码的形 式存储的。正数的补码是它本身,负数的 补码是其绝对值取反加1。例如 -10 原码 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 绝对值 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 取反 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 加1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 - 10 18 整型数据应用中的几个问题整型数据应用中的几个问题: : 变量要先定义后使用 注意防止数据溢出 常量与变量的数据类型要匹配 19 例:例: main( ) int a , b ,c; a = 32767 ; b = 3 ; c = a + b ; printf ( “ c = %d n ” , c ) ; 20 修改后修改后 main( ) long a , b , c ; a = 32767 ; b = 3 ; c = a + b ; printf ( “ c = %d n ” , c ) ; 21 三、三、实型数据实型数据 实型数据包括实型常量和实型变量 1.实型常量 两种表 示形式 小数 指数 0.123 3e-3 实型常量只能用十进制形式表示, 不能用八进制和十六进制 常量占用内存空间吗? 22 实型常量的表示方法实型常量的表示方法 1) 十进制小数形式:由符号、整数部 分、小数点及小数部分组成。 例: -12.67 121.91 23 由十进制小数形式加上指数部分组成: 十进制小数e指数 或 十进制小数E指数 其中e或E前面的数字表示尾数,e或E表示底 数10,e后面的指数必须是整数,表示10的幂 次。例如123e3或123E3都代表123103。 注意:字母e之前必须有数字,而且e后面指 数必须为整数。 一个实数可以有多种指数表示形式。“规范 化指数形式”是指在字母e之前的小数部分中 ,小数点左边应有一位非零数字。一个实数 在用指数形式输出时,是按规范化指数形式 输出的。 2) 指数形式: 24 例:例: 1 1e3e3、1.8e-31.8e-3、-123e-6-123e-6、-.1e-3-.1e-3 e5e5、1e-3.21e-3.2、e e、.e-03.e-03 25 2.2.实型变量实型变量 类型说明符类型说明符 长度长度 数的范围数的范围 有效数字有效数字 单精度型单精度型 float 4float 4字节字节 - -101038 38 101038 38 7 7位位 双精度型双精度型 doubledouble型型 8 8字节字节 - -1010308 308 10 10308 308 15 15位位 实型变量的有关规则如下: 取值范围是指数据的绝对值,它表示了数 值的精度。 有效数字是指数据在计算机中存储和输出 时能够精确表示的数字位数。 26 实型数据在计算机中的存放形式 0.123456 2 数符小数指数符号 指数 0.123456102 1位23位1位7位 27 实型数的分辨率:实型数的分辨率: 最小正数:最小正数:1010-38 -38 小于该数时处理为 小于该数时处理为0 0 下溢下溢 最大正数:最大正数:101038 38 大于该数时提示 大于该数时提示出错出错 上溢上溢 l l 实型数在计算机内部都按指数形式存放实型数在计算机内部都按指数形式存放 l l 实型数常数不区分单精度和双精度实型数常数不区分单精度和双精度 l l 数的存储结构和精度与计算机硬件特性有关数的存储结构和精度与计算机硬件特性有关 超出表示范围的数机器如何处理? 28 实型数据应用中的误差问题 例:输出实型数据 a,b main( ) float a; double b; a=12345.6789; b=123456789123456.7899; printf(“a=%fnb=%fn”,a,b); 29 Output: a=12345.676711 b=123456789123456.797000 30 四、字符型数据四、字符型数据 字符型数据包括字符 型常量和字符型变量 1、字符型常量 l 用单引号包含的一个字符是字符型常量 l 只能包含一个字符 a,A, 1 abc、“a” 31 C语言提供的另一种字符型常量是转 义字符常量。转义字符常量是以反斜杠 开头的字符常量,它通知编译器需要用 特殊的方式处理反斜杠后的字符,将反 斜杠后的字符转换成另外的意义。 转义字符(特殊形式的字符常量) 32 n 换行 t 横向跳格 r 回车 反斜杠 ddd ddd表示1到3位八进制数字 xhh hh表示1到2位十六进制数字 例:60是十进制数48,代表ASCII码字 符0 105是十进制数69,代表ASCII码字 符E x61是十进制数97,代表ASCII码字 符a 33 l 定义形式 char l 占存储空间 一个字节 2、字符型变量 一个字符变量只 能包含一个字符! main() char c ; c = c; printf ( “%c”, c ); 运行结果:c 34 a的ASCII值 为97 内存中存储形式 0 1 1 0 0 0 0 1 字符型数据的存储格式:字符型数据的存储格式:ASCIIASCII码码 字符字符a、A、1 存储为:存储为: 9797、6565、4949 35 3 3、字符串常量、字符串常量 字符串常量是字符串常量是用双引号括用双引号括 起来的一个或多个字符。起来的一个或多个字符。 n个字符组成的字符串常量, 占空间为 n+1 个字节 china 0 字符串结束标记字符串结束标记 “空空”字符字符 “a” 串长 1 “This is C string” 串长 16 “ ” (空格)串长1 “” (不含空格)串长0 例例 C 语言中没有专 用的字符串变量 36 main() char a,b,c; int d; a=5; b=60; c=A; d=1089; printf(“a=%c b=%c c=%d d=%cn“,a,b,c,d); printf(“a=%d b=%dn“,a,b); getch(); 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1d 65 0 0 1 1 0 0 0 0 b=60在计算机中的存储 37 * 字符串 “w 110good”占几个字节? * 字符串 “w11”占几个字节 ? 转义字符 字符串结束标记 w 11 38 访问内存的两种方式: 直接访问:按地址直接存取 float b=3.5; 内存分配 例例 a的地址 a的内容 指针 a的地址 a是整型变量,存放内容 i是指针变量,存放地址 五、指针型数据及其表示五、指针型数据及其表示 存储变储变 量 2字节节 39 例:int a=10,*i,x; float b=3.5,*p1; char c,*p2= i=p1= x=*i; *i=a 2、指针变量的定义与赋值 定义: 存储类型 * 指针变量名 * *i i是是i i指向的变量指向的变量a a 指针运算 定义指针变量 指针初始化 指针赋值 40 *-指针运算符 p= /*取a地址运算*/ p1=p; /*直接赋值*/ p2=NULL; /*赋空值,不指向任何变量*/ P3=0; p4=0; 不允许直接将一个整数直接 赋值给一个指针变量! 41 指针变量的类型是它所指向的值的类型! 问题:指针变量能指向常数吗? 常数不占用内存单元! 指针的应用在第十章介绍 42 在定义变量时为其指定值 方法: int a=5; int a,b,c=5; int a=5,b=5,c=5; int a=b=c=5; 1. 定义变量的同时为 其初始化 2. 初始化不是在编译 时进行,而是在程序运 行时完成的 六、变量的初始化 43 一、认识C中的运算符和表达式 运算分量 对数据进行 运算的符号 被加工 的数据 表达式 运算符 3-3 算术运算与赋值运算 X= 5 + b * c 44 l 表达式的运算结果称为表达式的值 l C中运算符 算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算 逗号运算符 条件运算符 . l 运算符和运算分量构成表达式 45 学习运算符应掌握的要点 l 运算符的种类与功能 l 运算符与运算分量的关系 个数 类型 A + B (ab) ? a: b 目 不同类型的变量,所占存储 空间、数的表示范围、有 效位和允许的操作不同 单目运算 双目运算 三目运算 46 l优先级:运算符的执行顺序 l结合性:相同优先级的多个运算符的运算顺序 X=a+b*c a+b-c 572 a=b=5 左结合 右结合 Y=a*b*c ( *为从左向右结合) 47 优先级和结合性的记忆方法: n优先级: n单目运算符的优先级高于 双目运算符 n双目运算符的优先级高于 三目运算符(特例:优先级小 于三目运算符) n逗号运算符优先级最低, 次之 n结合性: n单目运算符结合性为从右 向左结合 n双目运算符结合性为从左 向右结合(特例:结合性为从 右向左结合) n三目运算符结合性为从右 向左结合 48 + 加法运算、正 值运算 (4) - 减法运算、负 值运算 (4) * 乘法运算(3 ) / 除法运算(3 ) % 求余运算(3 ) (结合性 ) 二、算术运算符和算术表达式二、算术运算符和算术表达式 1.1.参加运算的对象都是参加运算的对象都是intint 型,其结果截取为型,其结果截取为intint型型 。 10/3 11/3 1/210/3 11/3 1/2 10.0/310.0/31./21./2 10/5*310/5*3 10/(5*3)10/(5*3) 2.2.求余运算对象必须是整型求余运算对象必须是整型 。 10 % 3 9 % 3 10 % 3 9 % 3 10 % 310 % 3 10 % 10 % 3 3 49 已知:int i=3; long e=4; float f=1.5; double d=2.0; 计算过程: f = 10 + a + i * f - d / e f = 107 + 4.5 - 0.5 f = 111.5 - 0.5 f = 111 算术表达式算术表达式 50 三. 自增、自减运算符 功能:变量自身加(减)1 i =i+1 i + 先引用变量i的值,再加1 + i 先加1,再引用变量i的值 i = i -1 i- - 先使用变量i的值,再减1 - -i 先减1,再使用变量i的值 51 已知:i=3; 1.执行 printf( “%d”,i+); Output: 3 i的值为 4 2.执行 printf( “%d”,+i); Output: 4 i的值为 4 示例: 52 注意:只能用于变量,不能用于表达式 和常量 优先级:高于双目算术运算符(2) 结合性:从右向左 (i+k)+ , - - 3 53 main() int a=5,b=5,s ; s=a+b; /* 5,5,10 */ printf(“%d,%d,%dn”,a,b,s); s=a+ +b; /* 6,5,10 */ printf(“%d,%d,%dn”,a,b,s); s=+a+b; /* 7,5,12 */ printf(“%d,%d,%dn”,a,b,s); s= - -a+b; /* 6,5,11 */ printf(“%d,%d,%dn”,a,b,s); s=a- - +b; /* 5,5,11 */ printf(“%d,%d,%dn”,a,b,s); s=a+b; /* 5,5,10 */ printf(“%d,%d,%dn”,a,b,s); 54 i=2; k=i+ + i+ + i+; i=2; k= (+i) + ( +i) + (+i); 自增之 后再相 加 执行完分 号再自增 55 四. 赋值运算符 将一个常量或一个表达式的值赋给一 个变量 格式: 变量名表达式 x = 5 y = x + 10 56 可以将一个实型赋给一个整型 也可将一个整型赋给一个实型 int x; x=5.3; x的值为 5 float y; y=5; y的值为 5.000000 赋值类型转换赋值类型转换 例例 接受赋值的变量类型决定了运算结果的类型 57 l复合的赋值运算 l赋值运算的优先级 (14) l赋值运算的结合性: 从右向左 X = y = 5 x=x+n x+=n 赋值运算符两侧 出现相同的变量 58 x=x+n x=x-n x=x*n x=x/n x=x%n x + = n x - = n x * = n x / = n x% = n 算术运算与赋值运算相结合 例例 59 main() int a,b,c,d; a=2,b=5 ,c= 6,d=10; a + =b; b- =c; c * =d; d / =a; a%=c; printf(“%d,%d,%d,%d,%dn”, a , b , c , d , a ); Output: 7,-1,60,1,7 例例 60 注意: 如果复合赋值运算符的右侧是包含 若干项的表达式,则右侧的表达式 相当于一个整体。 如: x * = y + 8 x = x * ( y + 8 ) 61 关系运算和逻辑运算经常作为条件语句 和循环语句中的条件,其

温馨提示

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

评论

0/150

提交评论