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

下载本文档

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

文档简介

1、数据类型、运算符与表达式,1 预备知识 2 C语言基本元素 3 基本数据类型 4 常量和变量 5 各类数据类型间的混合运算 6 运算符与表达式,十进制:4956= 410+910 +510+610,二进制:1011=12+02 +12+12,十六进制:81AE=816+116 +1016+1416,八进制:4275=48+28 +78+58,计算机中数的表示及进制转换(以下为预备知识) 基本概念 数码:表示数的符号 基:数码的个数 权:每一位所具有的值,各种进制之间的转换 二进制、八进制、十六进制转换成十进制 方法:按权相加,各种进制之间的转换(整数) 二进制、八进制、十六进制转换成十进制 方

2、法:按权相加,十进制转换成二进制、八进制、十六进制 原理:,方法:连续除以基,从低到高记录余数,直至商为0,二进制与八进制之间的转换 二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制 八进制转换成二进制:用3位二进制数代替每一位八进制数,例 (1101001)2=(001,101,001)2=(151)8,例 (246)8=(010,100,110)2=(10100110)2,000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7,二进制与十六进制之间的转换 二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六

3、进制 十六进制转换成二进制:用4位二进制数代替每一位十六进制数,例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16,例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2,0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F,字节和位 内存以字节为单元组成 每个字节有一个地址 一个字节一般由8个二进制位组成 每个二进位的值是0

4、或1,数值的表示方法原码、反码和补码 原码:最高位为符号位,其余各位为数值本身的绝对值 反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反 补码: 正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再加1,9-5=4 9+7=16=(4)12,负数补码转换成十进制数:先求原码,再转换为十进制,例 补码:11111001 取反:10000110 加1: 10000111b=-7,32位浮点数的机内表示: X= +0.001011001= 2-010 (+ 0.1011001),阶码用一个八位长度的带符号的整数表示,它决定表示的数的数值值范围 尾数用一个24位长度的带符

5、号定点小数表示,它的位数决定数的精度,尾数的小数点位置在尾数的正负号位和绝对值的第1位之间。,规格化的指数形式,C语言的基本符号可分4个类: 1)英文字母:大小写各26个,共计52个; 2)阿拉伯数:09共10个数字; 3)下划线:_; 4)特殊符号:标点符号和运算符,通常由12个符号组成。,例如: 算术运算符: + - * / % + - 关系运算符: = 条件运算符: ?: 和赋值运算符:= 其他分隔符: ( ) . , ;,1、C语言基本符号,C 语言基本符号,标识符的书写规则: (1)标识符只能由字母、数字和下划线三种基本字符组成 (2)必须以字母或下划线开头 (3)不能以关键字作为标

6、识符。 如:_1 year month day student_name sum0(合法) M.D.Jones $123 #a 3b ?c a=b 张三 int(不合法) 注意:在C语言中,大小写字母不等效。因此,a和A,I和i,Sum和sum,分别是两个不同的标识符。,就是用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。,2、标识符,由系统定义的具有特定含义的标识符 用户不能用来另作它用 C语言中由ANSI标准推荐的关键字有32个:,auto break case char const continue default do double else enum extern

7、 float for goto if int long register return short signed sizeof static struct switch typedef unsigned union void volatile while,3、关键字(保留字),126 239 99258 整型数据,3.14.159 0.618 1.723 实型数据,A B C 字符数据,数据类型的丰富程度,直接反映了程序设计语言处理数据的能力 数据类型丰富是C语言的一个很重要的特点,基本数据类型,字符型(char) 整型(short,int,long,unsigned) 基本类型 数值类型 单

8、精度型(float) 实型 双精度型(double) 枚举类型(enum) 数据类型 数组类型( ) 构造类型 结构体类型(struct) 共用体类型(union) 指针类型(*) 空类型(void),数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,数据类型总表,基本数据类型,整型,字符型,实型,有,无,说明:数据类型所占位数随机器硬件不同而不同,上表以IBM PC机为例:,一般用大写字母 是宏定义预处理命令 不是C语句 直接常量: 整型常量 实型常量 字符常量 字符串常量,如 #define PRICE 30,常量 定义:程序运行时其值不能改变的量(即常数

9、) 分类: 符号常量:用标识符代表常量 定义格式: #define 符号常量 常量,例 符号常量举例 #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); ,运行结果:total=300,常量与变量,整型常量(整常数) 三种形式: 十进制整数:由数字09和正负号表示.如 123,-456,0 八进制整数:由数字0开头,后跟数字07表示.如0123,011 十六进制整数:由0 x(数字0和字母X)开头, 如0 x123,0Xff,练习: 0123 = ( )10 0 x123

10、 = ( )10 0Xff = ( )10,整型常量的类型 根据数据所占的二进制位数分为:int、short、long; 根据数据的最高是否为符号位又分unsigned、signed; 故可组合出六种类型。P43表3-1 类型的使用 根据其值所在范围确定其数据类型 在整常量后加字母l或L,认为它是long int 型常量,例 12 与 12L,例 30000 为int型 65536 为long int 型,值域 由机器中数据的存储长度决定。 如Turbo C中,有 short(2字节)int(2字节) long(4字节),整数在内存中的存储情况 使用Turbo c编译系统,数据63在存储单元的

11、存储情况如下:,实型常量(实数或浮点数) 表示形式: 十进制小数形式:由数字和小数点组成; 例如: 3.4, 4., .3。 指数形式:由“十进制小数”+“ e(或E)”+“十进制整数”三部分组成。 例如: 12.5e-6 表示12.510-6 但在内存中都是以指数形式存储,实型常量的类型 单精度型float,双精度型double和长双精度型long double,默认double型 在实型常量后加字母f或F,认为它是float 型,float:4字节,取值范围-3.410-38 3.41038,精度7位 double:8字节,取值范围-1.710-308 1.710308 精度15位 lon

12、g double:16个字节,取值范围-1.210-4932 1.2104932精度19位,字符常量 定义:用单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例 字符A有以下方式表示: A-101-x41-65,如 A65, a97, 048 , n10,如 a A ? n 101,转义字符:反斜线后面跟一个字符或一个代码值表示,例 转义字符举例 #include void main() printf(101 x42 Cn); printf(I say:How are you?n

13、); printf(C Programn); printf(Turbo C); ,运行结果:(屏幕显示) A B C I say:How are you? C Program Turbo C,例 #include void main() printf(Yb=n); ,运行结果: 屏幕显示:= 打印机输出:,字符常量与字符串常量不同,字符串常量 定义:用双引号()括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符串结束标志,变量 概念 指在程序运行中, 其值可以被改变的量 变量代表计算机内存中的某一存储空间,该存储空间中存 放的数据就是变量的值。 在同一程序块中,每个变量都有唯一的名字

14、,不能被重复定义。,变量定义的一般格式: 数据类型 变量名1,变量名2,变量名n;,例: int a,b,c; float data;,决定分配字节数 和数的表示范围,合法标识符,变量初始化:在定义变量的同时给变量一个初始值。,变量的使用:先定义,后使用,编译时可以发现错误,例1 int student; stadent=19; /Undefined symbol statent in function main,例2 float a,b,c; c=a%b; /Illegal use of floating point in function main,变量定义位置:一般放在函数开头,整型变量

15、 占字节数随机器不同而不同,一般占一个机器字 shortintlong 可用sizeof(类型标识符)测量,实型变量 float:占4字节,提供7位有效数字 double:占8字节,提供1516位有效数字,字符型变量 字符变量存放字符ASCII码 char与int数据间可进行算术运算,例 float a; a=111111.111; /* a=111111.1*/ double b; b=111111.111; /* b=111111.111*/,例 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */,没有字符串变量,用字符数组

16、存放,例 /*ch2_003.c*/ #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn”,total,ch1); ,运行结果: total=37.500000, ch1=d,自动转换 什么情况下发生 运算转换-不同类型数据混合运算时 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时转换 运算转换规则:不同类型数据运算时先自动转换成同一类型,C语言允许整型、实型、字符型数据进行混合

17、运算。 有3种转换方式:自动转换、赋值转换和强制转换。,各类数据类型间的混合运算,赋值转换,在赋值时将赋值符右边值的类型转换成与其左边变量类型一致的类型。 有下列几种情况: 实型赋给整型(字符型):去掉小数部分; 整型(字符型)赋给实型: 补足有效位; 对char、int、short、long、unsigned型数据: 赋值符右边数据a位,赋值符左边的变量b位 若 a=b 原样照赋; ab 截断高a-b位,送低b 位; 有符号数据赋给有符号变量:符号扩展; 其他情况:高a-b位全补0。 符号扩展: 符号位为0,剩余的高位补0; 符号位为1,剩余的高位补1。,赋值转换各种情况归结起来: 按存贮单

18、元中的存贮形式直接传送 截取或扩展时尽量保持原数据的值,强制转换 一般形式:(类型名)(表达式) 例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3,运算符和表达式,学习运算符应注意: 运算符功能 与运算量关系 要求运算量个数(单目,双目) 要求运算量类型 运算符优先级别P365附录C 结合方向 结果的类型,算术运算符和表达式 基本算术

19、运算符: + - * / % 结合方向:从左向右 优先级: - -* / % - + - (2) (3) (4) 说明: “-” 为单目运算符时,右结合性 两整数相除,结果为整数,取商的整数部分 %要求两侧均为整型数据,例 5/2 = -5/2.0 =,例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2,例 5/2 = 2 -5/2.0 = -2.5,例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 (),自增、自减运算符+ - - 作用:使变量值加1或减1 根据表达式的取值分两种情况 前置 +i, -i (表达式值为i的新值) 后置 i+,

20、i- (表达式的值为i的原来的值),例 j=3; 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,说明: + - 只能用于变量 不能用于常量和表达式,如5+,(a+b)+都是错的 + -结合方向: 自右向左 优先级:- + - -* / % -+ - (2) (3) (4) 小心使用,避免歧异,例:右结合性 -i+等效-(i+) i=3; printf(“%d”,

21、-i+); /*输出3*/ 注意i+的值和i的值,不好理解的不用: 1、j+k; 相当于 (j+)+k; 2、k=(i+)+ (i+)+ (i+); 相当于 k=i+i+i;i+;i+;i+; 3、j=(+i)+(+i)+(+i); 相当于 +i;+i;+i; j=i+i+i;,赋值运算符和表达式 简单赋值运算符 符号: = 格式: 变量名=表达式 作用:将一个数据(常量或表达式的值)赋给一个变量,复合赋值运算符 种类:+= -= *= /= %= = = 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,

温馨提示

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

评论

0/150

提交评论