C语言程序数据类型与表达式,C语言的基本数据类型与表达式(C语言程序设计杨路明主编).ppt...

253b171540df25e1b84436cbe50dfc72.gifC语言的基本数据类型与表达式(C语言程序设计杨路明主编).ppt

第 2 章 C语言的基本数据类型与表达式,2.1 C语言的基本数据类型 2.2 常量与变量 2.3 运算符与表达式 2.4 数据类型转换,存取数据必须先确定数据的编码方式、存储格式和所占的存储长度, C语言中把这三者结合起来,给出几种固定的形式,这些形式就是最基本的数据类型。,2.1 C语言的基本数据类型,为什么要设置数据类型,在计算机中使用一定长度的存储单元(通常是字节的倍数)来存储数据。,存储的编码方式有原码、反码、补码、ASCII码。 存储的存储格式有定点型、浮点型。,其中,用于存储数据的存储单元的长度决定了数据取值范围的大小。,一、数据类型概述,本章中将对基本类型中的前三类进行介绍和学习。,变量指以标识符为名字,其值可以改变的量。,在学习各种数据类型之前,我们先简单了解一下常量和变量的概念。后面的章节中将会详细介绍。,常量指在程序运行中,其数值不能被改变的量。,变量 代表计算机内存中的某一存储空间,变量的类型决定了该存储空间的长度和其中存放数据的编码方式及存储格式。 变量的类型也决定了该存储空间中存放数据的数据形式和取值范围。,* 八进制的数码范围为07; 018 * 十六进制的数码除了数字09外, 还使用英文字母a f 或A F表示1015。 如0 x1e 注意,二、整型采用定点整数的存储格式,只能表示纯整数,1、整型常量,1 十进制形式与数学上的整数表示相同; 例如 12, -100, 0 2 八进制形式在数码前加数字0; 例如 0121*812*8010十进制) 3 十六进制形式在数码前加0X(数字0和字母X)。 例如 0 x121*1612*16018十进制),如Turbo C中,有 short2字节int2字节 long4字节 关键字 所占位数 取值范围 short 16 -3276832767 unsigned short 16 065535 int 16 -3276832767 unsigned 16 065535 long 32 -21474836482147483647 unsigned long 32 04294967295,2、整型变量的分类,根据数据所占的存储长度的不同分为int、short、long; 同样存储长度的数据又分unsigned、signed; 故可组合出六种类型。,3、整型变量的值域,由机器中数据的存储长度决定,思考int a20000,b20000,c; cab; c的值为多少 如果c定义为long型是否能解决问题,2、实型变量的分类及值域 关键字 字节数 取值范围 精度位 float 4 3.410-38 3.41038 7 double 8 1.710-308 1.710308 15,注意三、实型,1、常量 1 十进制小数形式由数字和小数点组成; 例如 3.4, 4., .3。 2 指数形式“十进制小数”“ e或E”“十进制数整数”。 例如 12.5e-6 表示12.510-6 。, 小数点不能单独出现; 0. .0 . e或E的两边必须有数,且其后面必须为整数; 如 6E0.2 e5 ,字符形式 功能 n 换行 t 横向跳格 b 退格 r 回车 反斜杠字符 单引号字符 ddd 8进制数表示的ASCII码对应的字符 xhh 16进制数表示的ASCII码对应的字符,四、字符类型,1、常量 1 用单引号括起来的一个字符;如A、 1、等。 2 用单引号括起来的由反斜杠引导的转义字符。,4、字符串常量 是用一对双引号括起来的字符序列。 注意每个字符串的后面都有一个0结束符。 如“SHANGHAI”,“AbcdeFGHijk”,“How are you”。,注意, a与“a”的区别。例如字符A的ASCII码为 65D(十进制)41H(十六进制)101Q(八进制) 字符A可以表示为A、x41、101。,2、字符型变量的分类 char 和 unsigned char;,3、值域(字符型可参与数学运算,也可看成一种一字节的整型变量) 每个字符型数据在内存中占一个字节;包括ASCII字符表中的所有字符(可显示字符和非显示字符)。,一、常量与符号常量 常量是指在程序运行中,其数值不能被改变的量。 常量又可分为直接常量和符号常量。,2.2 常量与变量,120 、 -100、 0; 0120、 072; 0 xFFFF、 0 x1e、0X28AF,0XED4 ; 120L, 200L ; 长整型常量 3.14、 -3.1、 5.12E-6 ; a 、、n、101 ; 099、12f、 0 xg 、48EA ; 019.5 、1e-08; 实型常量只能用十进制形式表示 2.1E10.2、E-6、6.4E4.8、E9 ; “changsha“ 、“ab“ ; 、p ab ;,1、直接常量是在程序中直接引用的数据。,请判断这些常量正确与否,定义形式 define 标识符 常量数据 例如 define PI 3.14159 在程序预处理时,凡是出现标识符PI的地方都将用 数据3.14159来替换。 如 2*2.3*PI 就等价于 2*2.3*3.14159。, 变量是指以标识符为名字,其值可以改变的量。 变量代表计算机内存中的某一存储空间,该存储空间 中存放的数据就是变量的值。 在同一程序块中,变量不能被重复定义。 使用变量时必须“先定义,后使用”。,2、符号常量 是用标识符来表示一个数据;在程序不能给它赋值。,二、 变量,2、变量初始化 在定义变量的同时给变量一个初始值。,注意,int a5, b3; int abc3; int a,b,c; abc3; 例如int a,b,c ; float x,y; char c1,c2; 或 int c1,c2; 定义变量就是在内存中划出一块相应类型的存储空间存放该变量的值。,main( ) int x,y,z,w; /*定义x,y,z,w为整型变量*/ unsigned int k; /*定义k为无符号整型变量*/ x10;y-20;k30; zxk;wyk; printf(“xkd,ykdn”,z,w); ,例2-1,程序运行结果为 xk40,yk10,变量根据作用域的不同可分为局部变量和全局变量,根据存储方式的不同可分为静态存储变量和动态存储变量,这些我们将在第六章中详细介绍。,在数学里当多个运算符一起组成一个表达式时,我们规定了优先级(先乘除后加减)和结合规则(从左至右)。 同样,在C语言中,我们也规定了每个运算符的结合规则及运算符之间的优先级。,2.3 运算符与表达式,运算符就是表示某种运算功能的符号。 按操作功能运算符大致可分为算术运算符、关系运算符、逻辑运算符、赋值运算符、条件运算符、逗号运算符以及按位运算符等。,表达式是由操作数和运算符组成的序列。 如12*3-4 、 35-7 、ab2 等都是C语言中的表达式。下面分类介绍各种运算符,取余注意取余运算的操作数只能是整数,且结 果的符号与前一操作数的符号相同,一、 算术运算符和算术表达式,1、 运算符 加34、 3 -减3-5、 -5 *乘3*5 /除5/2、5.0/2 (注意,此二种形式,结果不同),53的值为2; -53的值为-2; 5-3的值为2; -5-3的值为-2; 12.33 若ab 的结果为0,则有a能被b整除2、算术表达式 用算术运算符和括符将操作数连接起来的式子。 优先级() *、/、 、- 结合性从左至右; 表达式的值 数值型int、long、unsigned、float、double;,例如 已知 float a2.0; int b6,c3; 求解 a*b/c-1.5afabs-5,float a2.0; int b 6,c 3; a*b/c -1.5 a fabs-512.0/3,5,4.0 - 1.5,2.5 97int,99.5 5,104.5double,思考 int a1,b2; 表达式a/b3的结果是多少 int a10000,b30000; 表达式ab的结果是多少 如何修改等价于ji;i; 所以i的值为4,j的值为3,等价于i;ji; 所以i的值为4,j的值为4,1 i3; ji; 2 i3; ji;,3、自增与自减运算符 、, i,i使用之前使i的值增1(或减1);, i,i使用之后使i的值增1(或减1);,分析下面几种情况中i与j的值当、 不与其他运算符混合使用时,i与i都等价于 ii1, i与i都等价于 ii-1,如i 2; j -i; 求执行完这两句后i与j的值分别是多少,特殊的设i3,j4,kij, k i j, 结合性自右至左。,分析“”与”-“是同优先级,且都高于“” 按结合规则,等价于j-i; 结果i的值为3,j的值为-2。,再看几个例子 如设i3,kiii k i,9,6,如设a3,baa b a,6,5,设a3,baa b a,8,5,设a3,baa b a,8,5,设a3,baa b a,10,5,7,4,4,1、6种关系运算符 2、关系表达式用关系运算符将表达式连接起来的式子 优先级 结合性自左至右; 表达式的值 若为真,则结果为1; 若为假,则结果为0。,35 值为 32 值为 设x-2; -3x-1 值为 设x1; 2x4 值为,例如,二、关系运算符和关系表达式,求如下关系表达式的值,0,0,0,1,算术运算符优先级高于关系运算符 343*4 值为 343*4 值为,3,1注意,不能用数学里习惯的关系运算符连用表示区间关系,2、逻辑表达式用逻辑运算符将表达式连接起来的式子 优先级 结合性自左至右; 表达式的值 若为真,则结果为1; 若为假,则结果为0。,三、逻辑运算符和逻辑表达式,1、3种逻辑运算符 ,参与逻辑运算的操作数叫逻辑量。,逻辑量可以是整型、实型、字符型和指针类型, 其中,0,0.0,0,NULL代表假,其余逻辑量代表真。,int a5; float b3.5; a a 0 a 0 ,例如,0,1,1,0,0,0,1,1,0,0,0,1例如表达式运算如下,混合优先级 高 算术运算符 关系运算符 和 赋值运算符 低,4 - 0,1 2,8 4,1,0,1,5 3 2 8 4 - 5,例如 1a 0; b 1; c a 执行后 a为 ,b为 ,c为 。,逻辑或优化和逻辑与优化,在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。,1,1,0,2a 1; b 1; c0; d a b c b3 ; 执行后 a为 ,b为 ,c为 ,d为 。,0,0,0,1,例如 1 n是小于m的偶数 2year是闰年 (能被4整除但不能被100整除,或能被400整除),逻辑表达式一般用于控制语句中的条件,n m n 2 0,year 4 0 year 100 0 year 400 0,例如1 xy12/4 2 xy12/4 3 xy12/4 4xy12/4,四、赋值运算符和赋值表达式,1、赋值运算符 执行功能把右边的表达式的值,存入左边的变量对应的存储空间,即给此变量赋值 321 aa2,2、赋值表达式用赋值运算符将变量和表达式连接起来的式子 形式 求值规则 将“”右边表达式的值赋给左边的变量。 优先级 算术关系 赋值 结合性自右至左; 表达式的值被赋值变量的值。,y值为12,x值为3,表达式的值为3,y值为3,x值为3,表达式的值为3,y值为3,x值为3,表达式的值为3练习设a12,计算表达式aa-a*12和aa-a*12的值,3、复合赋值运算符 *、/、 、 、 -, , maxabab 求max的值,max的值为5,例如 a b y 表达式 ya4,b5,ab; ya4,b5,ab; ya4,b5,ab; ya4,b5,ab;,4,5,4,9,4,5,9,9,4,5,9,5,5,5,5,10, 形式有两种 sizeof 变量名 sizeof 类型名 结果为整型数。,int a; float x; printf“d,d”,sizeof a,sizeof x; printf“d,d”,sizeofint,sizeoffloat; 以上两个printf语句结果均为 。,例如,3、求字节运算符 sizeof 作用求得变量或某种数据类型所需的字节数。,2,4, C语言允许整型、实型、字符型数据进行混合运算。 有3种转换方式自动转换、赋值转换和强制转换。 一、类型自动转换,2.4 数据类型转换特点由数值存储位数少的向多的转换;整型向实型转换 操作数为相同类型的不转换,仍取原类型,特别注意此时可能带来的错误,int x2;float y1.6;char cA; 则 c 1/x * y ,例如char c68.5; printf“c”,c;,65int 0int * 1.6float),65float,二、 赋值转换 在赋值时将赋值符右边值的类型转换成与其左边变量类型一致的类型。,有下列几种情况 1 实型 整型(字符型)去掉小数部分;,2 整型(字符型) 实型 补足有效位;,float f23; 23.00000 f (7位) double fA; 65.0000000000000 f(15位)3对char、int、short、long、unsigned型数据 赋值符右边数据(a位) 赋值符左边的变量(b位) 若 ab ab,ab原样照赋;,截断高a-b位,送低b 位;,有符号数据 有符号变量符号扩展;,其他情况高b-a位全补0。,符号扩展 符号位为0,剩余的高位补0; 符号位为1,剩余的高位补1。,例如 int a2,b5; float x4.4; 则有 表达式 结果 b/a floatb/a floatb/a intxax intxax,三、强制类型转换 形式 类型名表达式 强制类型转换时,得到所需类型的中间变量,原来变量的类型不会改变。,2,2.5,2.0,4.4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值