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

下载本文档

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

文档简介

第2章 数据类型、运算符和表达式 l2.1 基本数据类型 l2.2 常量与变量 l2.3 运算符与表达式 2.1 基本数据类型 l基本数据类型包括整型、字符型、实型。 l语言提供如图2-1所示的数据类型。 2.1 基本数据类型 1. 整型量 l整型量包括整型常量、整型变量。整型常量就是整常 数。在C语言中,使用的整常数有八进制、十六进制 和十进制三种。 2. 实型量 l实型也称为浮点型。实型常量也称为实数或者浮点数 。在语言中,实数只采用十进制。它有两种形式: 十进制数形式和指数形式。 3. 字符型量 l字符型量包括字符常量和字符变量。 2.1 基本数据类型 2.2.1 常量 l常量:指在程序运行中,其数值不能被改变的 量。 l常量包括:整型、实型、字符型和字符串四 种类型。可按其值的表现形式区分它的类型 。 例如: l101520是整型常量; l10.515.520.5是实型常量; labc是字符型常量; l“C language”是字符串常量等 2.2 常量与变量 1、整型常量 整型常量就是整数,有三种表示形式。 (1)十进制形式 十进制整常数没有前缀。其数码为09,可以包 含+、-号。 例如: 合法的十进制整常数:237 -568 65535 1627 不是合法的十进制整常数:023 、 23D 2.2 常量与变量 (2)八进制形式 在数码前加数字0,数码取值为07。 例如: 合法的八进制数:015、0101、0177777 不是合法的八进制数:256、03A2 八进制数可以有正负,如:-017,+023 (3)十六进制形式: 前缀为0X或0x ,数码取值为09、AF或af 。 例如: 合法的十六进制整常数:0X2A、0XA0 、0XFFFF 不是合法的十六进制整常数:5A 、0X3H 十六进制数可以有正负,如:-0X2A 2.2 常量与变量 注意:在程序中是根据前缀来区分各种进制数的。因此在书写 常数时不要把前缀弄错造成结果不正确。 以上三种整型常数在机内都以16位二进制带符 号补码形式表示,所以,所能表示的数是有限制的。 l十进制整常数的范围为-32768+32767。 l八进制无符号数的表示范围为-0100000077777。 l十六进制数的表示范围为-0X80000X7FFF。 如果使用的数超过了上述范围,就必须用长整型数 来表示。长整型数是用后缀“L”或“l”来表示的。 例如: l十进制长整常数:158L 、-358000L l八进制长整常数:012L 、-077L 、0200000L l十六进制长整常数:0X15L 、-0XA5L 、0X10000L 2.2 常量与变量 如果要处理的数不会出现负数,也可以使用无 符号数形式。无符号整型数是用后缀符号 “U”或“u” 来表示的。无符号长整型数是用后缀符号 “UL”或 “ul”来表示的。 例如: 下列表示是合法的: 123u、0123u、1234567ul、0xa23u、0X12UL 下列表示是不合法的: -123u、-0123u、-1234567ul、-0xa23u、-0X12UL 注意:无符号整型数可以表示的范围为065535 2. 实型常量 实型也称为浮点型。实型常量也称为实数或者 浮点数。实型数只能用十进制表示,其形式可以有 小数和指数两种格式。 (1)小数形式 由数码0 9、小数点和正负号组成。 例如: 0.0,.25,5.789,0.13,5.0,300.,-267.8230等。 2.2 常量与变量 注意:实型数的小数形式表示的小数点前面的“0”或 小数点后面的“0”可以省略,但不能同时省略。如: .5、5.、0.、.0都合法;但0.0不能写成 . (2)指数形式 由十进制的小数形式(称为尾数)加阶码标志 “e”或“E”以及13位整数表示的阶码组成。 一般形式为 a E n (a为十进制数,n为带符号十进制整数) 其值为 a 10n 如: 2.1E5 等价于 2.1105 3.7E-2 等价于 3.710-2 0.5E7 等价于 0.5107 -2.8E-2 等价于 -2.810-2 以下是不是合法的实数: 345 、E7 、 -5 、53-E3 、2.7E 、2.56E1.5。 2.2 常量与变量 注意:实数默认是双精度 实型(double),可以使 用后缀“f”或“F”以表 示该数为单精度实数。如 356.56f、-1.5f是都是 float型的。 3. 字符常量 2.2 常量与变量 字符形式 功能 n 换行 t 横向跳格 b 退格 r 回车 反斜杠字符 单引号字符 ” 双引号字符 ddd 8进制数表示的ASCII码对应的字符 xhh 16进制数表示的ASCII码对应的字符 (1) 用单引号括起来的一个字符;如:A、 1、?等。 (2) 用 单引号括起来的由反斜杠()引导的转义字符。 例如: 字符A的ASCII码为: 65D(十进制) 41H(十六进制) 101Q(八进制) 所以字符A可以表示为 A、 101、 x41 是等价的形式。 字符串常量是由一对双引号括起的字符序列。 例如:“CHINA”,“C program:”, “$12.5” 等都是 合法的字符串常量。 注意: l每个字符串的后面都有一个0结束符。 l字符串长度是双引号中字符个数。 例如: 1.“SHANGHAI” 长度8 2.“Abcd” 长度4 3.“How are you?”长度12 4.“”长度0,称其为空串 2.2 常量与变量 4. 字符串常量 字符串常量和字符常量是不同的量。它们之间主要有以下区 别。 (1)表示形式不同 (2)字符常量只能是单个字符,字符串常量则可以含零个 或多个字符。 (3)可以把一个字符常量赋予一个字符变量,但不能把一 个字符串常量赋予一个字符变量。在语言中没有相应的 字符串变量。但是可以用一个字符数组来存放一个字符串 常量。 (4)字符常量占一个字节的内存空间。字符串常量占的内 存字节数等于字符串长度加1。最后一个字节中存放字符 字符串结束标志“0”(ASCII码为0)。 2.2 常量与变量 注意:a 和 “a” 的区别? 5. 符号常量 用一个标识符来表示一个常量。其一般形式为: #define 标识符 常量 例如: #define NULL 0 #define EOF -1 #define PI 3.1415926 其中,#define是一条预处理命令,称为宏定义命令,其功能 是把该标识符定义为其后的常量值。 符号常量一经定义,以后在程序中所有出现该标识符的 地方均代之以该常量值。 2.2 常量与变量 注意:习惯上用于符号常量的标识符一般用大写字母 表示,变量名用小写字母,以示区别。 【想一想】 用#define定义符号常量有什么好处? 使用符号常量有如下两点好处。 (1)增强可读性 (2)增强程序的可维护性 2.2 常量与变量 2.2.2 变量 在程序执行过程中,其值可以改变的量称为 变量。每一个变量都对应计算机内存中相应长度 的存储单元,以存放变量所取得的值。 每一个变量都用一个名字来标志,称之为变量 名。 注意:变量定义必须放在变量使用前,一般放在 函数体的开头部分。 变量定义的格式: 数据类型 变量名列表; 2.2 常量与变量 例如: int a,b,c ; float x,y; char c1,c2; 或 int c1,c2; 1.整型变量 整型变量可分为以下几类(在Visual C+ 6.0中长度) (1)基本型 :int4B(在TC中,2B) (2)短整量 :short int2B (3)长整型 :long int4B (4)无符号型 :unsigned int4B (5)无符号短整型 :unsigned short2B (6)无符号长整型 :unsigned long4B 2.2 常量与变量 例如, int a,b; unsigned int u1,u2; short int s1,s2; long l1,l2; unsigned long m,n; 2. 实型变量 实型变量分为两类: l单精度型:float l双精度型:double 在Visual C+ 6.0中: 单精度型占4个字节(32位)内存空间,只能提供七 位有效数字。双精度型占8 个字节(64位)内存空间, 可提供16位有效数字。 例如: float x,y;(x,y为单精度实型量) double a,b,c;(a,b,c为双精度实型量) 2.2 常量与变量 3. 字符变量(char) 字符变量的取值是字符常量,即单个字符。 例如: char a,b; 一个字符变量占一个字节存储空间,可以用关键字 unsigned和signed修饰char而构成: l unsigned char l signed char 2.2 常量与变量 4. 变量的初值 在程序中常常需要对变量赋初值,以便使用变量。 在变量说明中赋初值的一般形式为: 类型说明符 变量1=值1,变量2=值2,; 例如: int a,b,c=5; float x=3.2,y=3f,z=0.75; char ch1=K,ch2=P; 注意: l说明中不允许连续赋值,如,int a=b=c=5;是不合法的。 l任何变量在引用之前都要先定义,否则编译过程中将报错。 2.2 常量与变量 5变量类型的转换 变量的数据类型是可以转换的。转换的方 法有两种: (1)自动转换 自动转换发生在不同数据类型的量混合运算 时,由编译系统自动完成。 2.2 常量与变量 double float unsigned long long unsigned int int char,short 无条件 无条件 高 低 (2)强制类型转换 强制类型转换是通过类型转换运算来实现的 。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的值强制转换成指定类型。例如: (float) a 把a转换为实型 (int)(x+y) 把x+y的结果转换为整型 在使用强制转换时应注意以下问题。 l类型说明符和表达式都必须加括号(单个变量可以不加括号) l无论是强制转换或是自动转换,都只是为了本次运算的临时性 转换,而不改变数据说明时对该变量或表达式本身的类型。 2.2 常量与变量 2.3.1 运算符与表达式的概念 1.运算符:就是表示某种运算功能的符号。 按操作功能运算符大致可分为:算术运算符、关系运算 符、逻辑运算符、赋值运算符、条件运算符、逗号运算符 以及按位运算符等。 2.表达式:是由操作数和运算符组成的序列。 如:1+2*3-4 、 35-7 、a=b%2 等都是C语言中的表达式。 2.3 运算符与表达式 在数学里当多个运算符一起组成一个表达式时,我们规定 了优先级(先乘除后加减)和结合规则(从左至右)。 同样,在C语言中,我们也规定了每个运算符的结合规则 及运算符之间的优先级。 2.3.2 算术运算符和算术表达式 1、 算术运算符 l +(加):3+4、 +3 l -(减):3-5、 -5 l *(乘):3*5 l /(除):5/2、5.0/2 (注意,此二种形式,结果不同) l %(取余)(注意:取余运算的操作数只能是整数,且结 果的符号与前一操作数的符号相同) 例如, 5%3的值为2; -5%3的值为-2; 5%(-3)的值为2; -5%(-3)的值为-2; 12.3%3 若a%b 的结果为0,则有a能被b整除 2.3 运算符与表达式 2、算术表达式 用算术运算符和括符将操作数连接起来的式子。 优先级:() *、/、% +、- 结合性:从左至右; 表达式的值: 数值型(int、long、unsigned、float、 double); 例如: 已知: float a=2.0; int b=6,c=3; 求解: a*b/c-1.5+a+fabs(-5)=? 2.3 运算符与表达式 float a=2.0; int b =6,c =3; a*b/c -1.5 +a +fabs(-5) 12.0/3 5 4.0 - 1.5 2.5 + 97(int) 99.5 + 5 104.5(double) 思考 int a=1,b=2; 表达式a/b+3的结果是多少 ? int a=10000,b=30000; 表达式a+b的结果是多少? 如何修改? double float unsigned long long unsigned int int char,short 2.3 运算符与表达式 2.3.3自增、自减运算符(+、-) l+i,-i:使用之前使i的值增1(或减1); li+,i-:使用之后使i的值增1(或减1); 分析下面几种情况中i与j的值: (1) i=3; j=i+; (2) i=3; j=+i; 等价于:j=i;i+; 所以i的值为4,j的值为3 等价于:i+;j=i; 所以i的值为4,j的值为4 当+、 -不与其他运算符混合使用时: 1. +i与i+都等价于 2. i=i+1, -i与i-都等价于 i=i-1 2.3 运算符与表达式 如:i = 2; j = -i+; 求执行完这两句后i与j的值分别是多少 特殊的:设i=3,j=4,k=i+j, k= i= j= 结合性:自右至左。 分析:“+”与“-” 是同优先级,且都高于“=” 按结合规则,等价于:j=-(i+); 结果:i的值为3,j的值为-2。 再看几个例子: 如:设i=3,k=(i+)+(i+)+(i+) k= i= 如:设a=3,b=(a+)+(a+) b= a= 设a=3,b=(+a)+(a+) b= a= 设a=3,b=(a+)+(+a) b= a= 设a=3,b=(+a)+(+a) b= a= 2.3 运算符与表达式 96 65 85 85 105 744 2.3.4 赋值运算符和赋值表达式 1、简单赋值运算符(=)和表达式 赋值表达式:用赋值运算符将变量和表达式连接起来的式子 形式: = 求值规则: 将“=”右边表达式的值赋给左边的变量。 优先级: +、算术赋值 结合性:自右至左; 表达式的值:被赋值变量的值。 例如:(1) x=(y=12)/4 (2) x=y=12/4 (3) x=(y=12/4) (4)(x=y)=12/4 2.3 运算符与表达式 x y 的值 3 12 3 3 3 3 语法错误! 2、复合赋值运算符和表达式 = 它等效于: = 复合运算符是一个运算符,但功能上,是两个运算符功能 的组合。包括:*=、/=、 %=、 +=、 -=, =, 计算表达式: 1. a+=a-=a*12 2. a+=a-=a*=12 的值。 3赋值语句 变量=表达式; 在赋值语句的使用中需要注意以下几点。 (1) 由于在赋值符“=”右边的表达式也可以又是一个赋值 表达式 (2) 注意在变量定义中给变量赋初值和赋值语句的区别 。 (3) 在变量定义中,不允许连续给多个变量赋初值。 如下述说明是错误的: int a=b=c=5; 必须写为:int a=5,b=5,c=5; 赋值语句允许连续赋值:int a,b,c;a=b=c=5; (4) 注意赋值表达式和赋值语句的区别。 2.3 运算符与表达式 2.3.5逗号运算符(,)和逗号表达式 用“,”把两

温馨提示

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

评论

0/150

提交评论