第3章_数据类型、运算符与表达式_第1页
第3章_数据类型、运算符与表达式_第2页
第3章_数据类型、运算符与表达式_第3页
第3章_数据类型、运算符与表达式_第4页
第3章_数据类型、运算符与表达式_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 数据类型、运算符与表达式,C语言中的数据类型 常量和变量 数据类型转换,学 习 目 标,C数据类型,基本类型 构造类型 指针类型(*) 空类型(void),结构体 (struct) 共用体(union) 数组,3.1 C语言的数据类型,整型(int) 浮点型 字符型(char) 枚举型(enum),单精度型(float) 双精度型(double),3.2 常量与变量,程序中,所有数据以常量形式出现或存放在变量中 常量,是程序运行中保持不变的数据量 变量,是程序中可访问的内存单元,3.2.1 常量和符号常量,C常量有两种表示形式:直接常量和符号常量,1直接常量,直接常量由数据的书写形式定

2、义它的类型和值 基本类型的直接常量在程序运行时直接参与运算,不占用内存存储单元,例如: 500 3.14159 0.263e-10 N “N”,2符号常量,符号常量对常数加以命名 符号常量是在一个程序中所指定的以符号代表的常量,从字面上不能直接看出其类型和值,2.2.1 常量,2符号常量,定义形式: # define 常量标识符 常量值 ;,直接常量或简单表达式,例如,符号常量定义: # define pi 3.14159,2.2.1 常量,例3.1 符号常量的使用 #define PRICE 30#include void main ( ) int num, total; num=10; t

3、otal=num * PRICE; printf(total=%dn,total); ,说明: 程序中用#define命令行定义PRICE代表常量30,此后凡在本文件中出现的PRICE都代表30,可以和常量一样进行运算,变量代表内存中具有特定属性的一个存储单元,它用来存放数据,这就是变量的值,在程序运行期间,这些值是可以改变的。 变量名实际上是一个以一个名字对应代表一个地址,在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。,3.2.2变量,变量是存储单元 变量定义:申请指定类型的存储空间,并以指定标识符命

4、名,变量定义形式: 类型 标识符, 标识符, , 标识符 ;,3.2.2变量,变量是存储单元 变量定义:申请指定类型的存储空间,并以指定标识符命名,变量定义形式: 类型 标识符, 标识符, , 标识符 ;,例如: int x ; int wordCut , Radius , Height ; double FlightTime , Mileage , Speed ;,3.2.2变量,变量是存储单元 变量定义:申请指定类型的存储空间,并以指定标识符命名,变量定义形式: 类型 标识符, 标识符, , 标识符 ;,变量定义同时可以赋初始值,类型 标识符=常量, 标识符=常量, , 标识符=常量;,3

5、.2.2变量,变量是存储单元 变量定义:申请指定类型的存储空间,并以指定标识符命名,变量定义形式: 类型 标识符, 标识符, , 标识符 ;,变量定义同时可以赋初始值,直接常量或标识常量,类型 标识符=常量, 标识符=常量, , 标识符=常量;,3.2.2变量,变量是存储单元 变量定义:申请指定类型的存储空间,并以指定标识符命名,变量定义形式: 类型 标识符, 标识符, , 标识符 ;,变量定义同时可以赋初始值,类型 标识符=常量, 标识符=常量, , 标识符=常量;,例如: int sum = 0 ; double TaxRate = 0.06 ; char c = A ;,3.2.2变量,

6、变量命名的规定:,语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 标识符不能为关键字。,例:sum,_total, month, Student_name, lotus_1_2_,BASIC, li_ling,M.D.John, ¥123,3D64,ab,错误,3.3 整型数据,十进制 ( Decimal , base 10 ),示数形式, + | - Digits L | l ,3.3.1 整型常量的表示方法,例如: 23-45101+55 23L-45L101L+55L, + | - Digits L | l ,十进制 ( Decimal , base

7、 10 ),3.3.1 整型常量的表示方法,示数形式,OctalDigits L | l ,07 数字串 必须以数字 0 为前缀,八进制 ( Octal, base 8 ),3.3.1 整型常量的表示方法,示数形式,OctalDigits L | l ,例如: 0230771045010,八进制 ( Octal, base 8 ),3.3.1 整型常量的表示方法,示数形式,OctalDigits L | l ,例如: 0230771045010,八进制 ( Octal, base 8 ),3.3.1 整型常量的表示方法,示数形式,281380 = 19,以 0 x 或 0X 为前缀,( 0 x

8、 | 0X ) HexDigits L | l ,十六进制 ( Hexadecimal, base 16 ),3.3.1 整型常量的表示方法,示数形式,( 0 x | 0X ) HexDigits L | l ,例如: 0 x2a0 x450 xffL0 xA1e,十六进制 ( Hexadecimal, base 16 ),3.3.1 整型常量的表示方法,示数形式,( 0 x | 0X ) HexDigits L | l ,例如: 0 x2a0 x450 xffL0 xA1e,十六进制 ( Hexadecimal, base 16 ),3.3.1 整型常量的表示方法,示数形式,21611016

9、0 = 42,3.3.2 整型变量,1.整型数据在内存中的存放形式,数据在内存中是以二进制形式存放的。 如: int i; /* 定义为整型变量 */ i=10; /* 给i赋以整数10 */ 数值是以补码(complement) 表示的。,2.整型变量的分类,共六种,有符号基本整型 有符号短整型 有符号长整型 无符号基本整型 无符号短整型 无符号长整型,(signed)int (signed)short (int ) (signed) long (int) unsigned int unsigned short (int) unsigned long (int),例如:整数13在内存中实际存

10、放的情况:,3.整型变量的定义:,例如: int a,b(指定变量、为整型) unsigned short c,d;(指定变量、为无符号短整型) long e,f;(指定变量、为长整型),规定在程序中所有用到的变量都必须在程序中定义,即“强制类型定义”。,例3.2 整型变量的定义与使用 #include void main() int a,b,c,d; unsigned ; 12;-24;10; ; printf(”+=%,=“,); ,运行结果: ,,例3.3 整型数据的溢出 #include void main()int a,b; a=32767; b=a+1; printf(“%d,%d

11、n”,a,b);,运行结果: 32767,-32768,说明: 数值是以补码表示的。一个整型变量只能容纳-3276832767范围内的数,无法表示大于32767或小于-32768的数。遇此情况就发生“溢出”。,3.3.3 整型常量的类型,一个整数,如果其值在-32768+32767范围内,认为它是int型,它可以赋值给int型和long int型变量。 一个整数,如果其值超过了上述范围,而在-2147483637+2147483647范围内,则认为它是为长整型。可以将它赋值给一个long int型变量。 一个整常量后面加一个字母u或U,认为是unsigned int型。 在一个整常量后面加一个

12、字母l或L,则认为是long int型常量。,float4 字节单精度浮点型 double8 字节双精度浮点型 long double 16 字节长双精度浮点型,34 浮点型数据,常用示数方式, + | - Digits. Digits F | f | L | l ,3.4.1 浮点型常量的表示方法, + | - Digits. Digits F | f | L | l ,只允许省略 其中一个数字串,常用示数方式,3.4.1 浮点型常量的表示方法, + | - Digits. Digits F | f | L | l ,可选的类型说明符,常用示数方式,3.4.1 浮点型常量的表示方法,科学示数

13、方式, + | - Digits. Digits Exponent F | f | L | l ,3.4.1 浮点型常量的表示方法, + | - Digits. Digits Exponent F | f | L | l ,科学示数方式,3.4.1 浮点型常量的表示方法, + | - Digits. Digits Exponent F | f | L | l ,有指数部分时 不能省略尾数部分,科学示数方式,3.4.1 浮点型常量的表示方法, + | - Digits. Digits Exponent F | f | L | l ,可选择的指数部分,科学示数方式,3.4.1 浮点型常量的表示方法

14、, + | - Digits. Digits Exponent F | f | L | l ,( e | E ) + | - Digits,例如: 1.23E10 0.23E-4 45.e+23 -23.68E12 1.23E10F 0.23E-4f 45.e+23L -23.68E12L,指数部分的表示形式,科学示数方式,3.4.1 浮点型常量的表示方法, + | - Digits. Digits Exponent F | f | L | l ,( e | E ) + | - Digits,例如: 1.23E10 0.23E-4 45.e+23 -23.68E12 1.23E10F 0.23

15、E-4f 45.e+23L -23.68E12L,指数部分的表示形式,科学示数方式,3.4.1 浮点型常量的表示方法,0.2310-4, + | - Digits. Digits Exponent F | f | L | l ,( e | E ) + | - Digits,例如: 1.23E10 0.23E-4 45.e+23 -23.68E12 1.23E10F 0.23E-4f 45.e+23L -23.68E12L,指数部分的表示形式,科学示数方式,3.4.1 浮点型常量的表示方法,0.2310-4 ( 单精度 ), + | - Digits. Digits Exponent F | f

16、 | L | l ,( e | E ) + | - Digits,例如: 1.23E10 0.23E-4 45.e+23 -23.68E12 1.23E10F 0.23E-4f 45.e+23L -23.68E12L,指数部分的表示形式,科学示数方式,3.4.1 浮点型常量的表示方法,45.01023 ( 双精度 ),3.4.2 浮点型变量,1.浮点型数据在内存中的存放形式,一个浮点型数据一般在内存中占4个字节(32位)。与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。,2.浮点型数据的舍入误差,#i

17、nclude void main()float a,b; a = 123456.789e5; b = a + 20 ; printf(“%fn”,b); ,说明: 一个浮点型变量只能保证的有效数字是7位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数,运行结果: 123456.789e5,char 字符一般用 ASCII 码 C的字符型与整型数据密切相关,以ASCII码值参与运算,35 字符型数据,表示方式,character,字符,八进制或十六进制值的转义符,char 字符一般用 ASCII 编码 C的字符型与整型

18、数据密切相关,以ASCII 值参与运算,表示方式,转义字符 escape_character 以 为前缀,表示改变后面escape_character符号或整数值的意义,使其成为控制符或字符值。,character,字符,八进制或十六进制值的转义符,a 101 x41 n,35 字符型数据,C常用转义字符,35 字符型数据,3.5.2 字符变量,字符型变量用来存放字符常量,注意只能放一个字符。 字符变量的定义形式如下:char c1,c2; 可以用下面语句对c1,c2赋值: c1a;c2 b ; 一个字符变量在内存中占一个字节。,3.5.3 字符数据在内存中的存储形式及其使用方法,一个字符常量

19、存放到一个字符变量中,实际上并不是把该字符的字型放到内存中去,而是将该字符的相应的ASCII代码放到存储单元中。 字符型数据和整型数据之间可以通用。,#include void main() char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); ,例3.6 向字符变量赋以整数。,运行结果: 97 98,#include void main()char c1,c2; c1=a; c2=b;c1=c1-32;c2=c2-32; printf(“c c,c1,c2);,例3.7 大小写字母的转换,运行结果:

20、 ,有些系统(如Turbo C)将字符变量定义为signed char型。其存储单元中的最高位作为符号位,它的取值范围是-128127。 如果在字符变量中存放一个ASCII码为0127间的字符,由于字节中最高位为0,因此用%d输出字符变量时,输出的是一个正整数。 如果在字符变量中存放一个ASCII码为128255间的字符,由于在字节中最高位为1,用%d格式符输出时,就会得到一个负整数。,字符串常量是一对双撇号括起来的字符序列. 合法的字符串常量: “How do you do.”, “CHINA”, “a” , “$123.45” 可以输出一个字符串,如: printf(“How do you

21、 do.”);,3.5.4 字符串常量,3.6 变量赋初值,如: int a=3; /*指定为整型变量,初值为*/ float f=3.56; /* 指定为浮点型变量,初值为.56 */ char c= a; /*指定为字符变量,初值为a */ int a=3,b=3,c=3;/*表示、的初值都是*/ int a,b,c=5; /*只对初始化,c的初值为 */,语言允许在定义变量的同时使变量初始化,3.7 各类数值型数据间的混合运算,整型(包括int,short,long)、浮点型(包括float,double)可以混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算.,2.

22、3 数据类型转换,提升,降格,由短数据转换为长数据,由长数据转换为短数据,浮点表示,定点表示,double,float,long,short,char,6 12,4 10,3 9,1 7,2,8,5,11,2.3 数据类型转换,实数转换为整数时,实数的小数部分全部舍去,不进行四舍五入。 当double型转换为float型时,多余的有效数字去掉,但进行四舍五入。,2.3 数据类型转换,整型、字符型、浮点型数据可混合运算时,不同类型的数据按照一定的规则先转换为同一类型,然后再运算.,3、强制类型转换运算符,说明 1、强制把表达式转换成所需的类型 2、强制类型转换不会改变操作数自身的类型,只是得到一

23、个所需类型的中间量,形式:(类型名)操作数,(double) 将转换成double类型 (int)(x+y) 将x+y的值转换成整型 (float)(5%3) 将5%3的值转换成float型,3.8 算术运算符和算术表达式,算术表达式由算术运算符和操作数组成,结果值是算术值,1、基本算术运算符有:,2自增和自减,程序设计中,常对变量进行如下操作: i = i + 1 i = i - 1 此时,变量 i 称为计数器,C+ 为其提供自增和自减算符,一 算术表达式,2自增和自减,注: 自增、自减算符的运算对象只能是整型变量,不能为常量或表达式; 例:5+(a+)( x + y ) -错误, +、- 算符均为右结合,后缀式为书写特例; 自增式和自减式作为独立的表达式,前缀式和后缀式没有区别; 作为表达式右值时: (1)前缀式 先增值后引用 例:x = + i 相当于

温馨提示

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

评论

0/150

提交评论