1 / 27

本章教学内容: 3 .1 C 语言的数据类型 3 .2 常量与变量 3 .3 整型数据 3 .4 浮点型数据 3.5 字符型数据 3.6 变量赋初值

本章教学内容: 3 .1 C 语言的数据类型 3 .2 常量与变量 3 .3 整型数据 3 .4 浮点型数据 3.5 字符型数据 3.6 变量赋初值 3.7 各类数值型数据间的混合运算 3.8 算术运算符和算术表达式 3.9 赋值语句和赋值表达式 3.10 逗号运算符和逗号表达式. 第 3 章 数据类型、运算符与表达式. 本章重点: 基本数据类型 常见运算符 算术表达式 赋值语句. 数组类型. 结构类型 struct. 联合类型 union. 枚举类型 enum. 3.1 C 语言的数据类型.

Télécharger la présentation

本章教学内容: 3 .1 C 语言的数据类型 3 .2 常量与变量 3 .3 整型数据 3 .4 浮点型数据 3.5 字符型数据 3.6 变量赋初值

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 本章教学内容: • 3.1 C语言的数据类型 • 3.2 常量与变量 • 3.3 整型数据 • 3.4 浮点型数据 • 3.5 字符型数据 • 3.6 变量赋初值 • 3.7 各类数值型数据间的混合运算 • 3.8 算术运算符和算术表达式 • 3.9 赋值语句和赋值表达式 • 3.10 逗号运算符和逗号表达式 第3章 数据类型、运算符与表达式 • 本章重点: • 基本数据类型 • 常见运算符 • 算术表达式 • 赋值语句 计算机工程学院 伍俊明地

  2. 数组类型 结构类型 struct 联合类型 union 枚举类型 enum 3.1 C语言的数据类型 • 数据类型——描述数据的存储结构、取值范围、操作种类等 • C语言中的数据类型 整型 int 基本类型 字符型 char 单精度实型float 实型(浮点型) 双精度实型double 数据类型 构造类型 指针类型 空类型(无值类型) void 计算机工程学院 伍俊明

  3. 3.2 常量与变量 3.2.1 常量与符号常量 • 常量:在程序运行的过程中其值不能被改变的量 • 常量区分为不同的类型: 整型 100,125,-100,0 实型 3.14 , 0.125,-3.789 字符型 ‘a’, ‘b’,‘2’ 字符串 “a”, “ab”, “1232” 计算机工程学院 伍俊明

  4. 3.2 常量与变量 • 符号常量——通过符号名代表一个常量π #define PI 3.14159 #include <stdio.h> void main(){ float r, c, s; r=2.0; c=2*PI*r; s=PI*r*r; printf(“r=%f, c=%f, s=%f\n”, r, c, s); } • 说明:PI已经定义为符号常量,以后给它赋值是错误的,如 • PI=3.14; • 所有符号常量将在编译前进行替换! 计算机工程学院 伍俊明

  5. 3.2 常量与变量 3.2.2 变量 • 变量:在程序执行的过程中其值可以改变的量 • 变量代表内存中具有特定属性的一个存储单元,该单元的编号就是内存地址,该单元中存放的数据就是变量的值。为方便使用,可给该单元取一个名字,叫做变量名。 变量名 r 210006 2.0 变量值 存储单元 存储单元 计算机工程学院 伍俊明

  6. 3.2 常量与变量 • 变量的命名规则:以字母或下划线打头的字母、数字和下划线组成的序列,C标准至少识别31个。 • 举例: • sum,_total, month, Student_name,lotus_1_2_3,BASIC, li_ling,r,R  • M.D.John, ¥123,3D64,a>b • 注意: • 变量名必须“先定义、后引用” • 变量名尽量“见名知义”,便于理解 • 每个变量定义时必须指明其类型 例:int i, j, k; float r, c, s; • 变量定义的一般形式: 数据类型 变量列表; 计算机工程学院 伍俊明

  7. 3.3 整型数据 一、整型数据的表示方法 • 十进制数:123,-456,4 • 八进制数:0123(等于十进制数83),-011 • 十六进制数:0x123(等于十进制数291),-0x34 二、整型数据在内存中的存放形式 • TC中占2个字节,VC++6.0中占4个字节 • 正数原码表示,负数补码表示 i 10 -10 j 符号位 计算机工程学院 伍俊明

  8. 3.3 整型数据 三、变量的分类 • 根据数值范围分三类: • 基本整型 int • 短整型 short int,或short • 长整型 long int,或long • 按有无符号分类,共6小类 • 基本整型 [singed] int, unsigned int • 短整型 [signed] short [int],unsigned short [int] • 长整型 [signed] long [int],unsigned long [int] 计算机工程学院 伍俊明

  9. 3.3 整型数据 计算机工程学院 伍俊明

  10. 3.3 整型数据 四、整型变量的定义——一般置于函数的开头 int a, b; unsigned short c,d; long e, f; • 例3.2 整型变量的定义与使用 • 例3.3 整型数据的溢出 整型数据的运算: 加:+ 减:- 乘:* 整除:/ 取余:% 计算机工程学院 伍俊明

  11. 3.3 整型数据 五、整型常量的类型 • 范围在-32768~+32767之间的默认为int型,超出者默认为long int型; • 一些编译系统中short int与int型数据在内存中存储结构相同,因此两者没有区别; • 整型常量后面加一个字母u或U,如12345u,表示无符号整数,-12345u按补码53191视为无符号整数; • 整型常量后面加一个字母l或L,如123l、456L,表示长整数。 计算机工程学院 伍俊明

  12. 3.4 浮点型数据 一、浮点型常量的表示方法 • 十进制小数表示法:0.123,-2.345,0.0 • 指数形式:123e3,-3.456E-2 二、浮点型变量的存储结构 • 单精度浮点数占4个字节,双精度浮点数占8个字节 • 浮点数按指数方式存储  • 1e3、1.8e-3、-123e-6、-.1e-3 • e3、2.1e3.5、.e3、e  指数部分 3.14159 小数部分 符号位 计算机工程学院 伍俊明

  13. 3.4 浮点型数据 三、浮点数的分类 • 浮点型数据分单精度、双精度和长双精度三类 • 浮点型变量的定义及浮点数的舍入误差 float x=3.14159, y; double u, v=-1.320; long double t; 说明:一个浮点型变量只能保证的有效数字是7位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数 运行结果:123456.789e5 计算机工程学院 伍俊明

  14. 3.4 浮点型数据 四、浮点数的类型 • C语言编译系统将浮点数视为双精度浮点数来处理。 • 例:f是一个浮点型变量 f=2.45678*4523.65; • 系统先把2.45678和4523.65作为双精度数,然后进行相乘的运算,得到的乘也是一个双精度数。最后取其前7位赋给浮点型变量f。如是在数的后面加字母f或F(如1.65f, 654.87F),这样编译系统就会把它们按单精度(32位)处理 计算机工程学院 伍俊明

  15. 3.5 字符型数据 一、字符常量 • 字符常量:用一对单引号括起来的单个字符。 正确: ‘a’,‘A’ ,‘6’ ,‘$’ ,‘?’ ,‘\n’ 错误: ‘abc’、“a” • 控制字符(转义符):以反斜杠 ‘\’开头 \n 换行 \t 横向跳格 \r 回车 \\ 反斜杠 \ddd ddd表示1到3位八进制数字 \xhh hh表示1到2位十六进制数字 计算机工程学院 伍俊明

  16. 3.5 字符型数据 二、字符变量 char c1, c2=‘b’, c3; c1=‘a’; c3=‘ ’; 三、字符数据的存储格式 • 一个字符在内存中占用一个字节 • 字符以ASCII码方式存储 • 字符可以ASCII码参与运算,大小写字符可以转换 • 说明:程序的作用是将两个小写字母a和b转换成大写字母A和B。从ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32。C语言允许字符数据与整数直接进行算术运算。 c2 c1 97 98 01100001 01100010 计算机工程学院 伍俊明

  17. 3.5 字符型数据 四、字符串常量 • 字符串常量:用一对双引号括起来的若干字符 “Hello”, “¥1234.56”,“a” • 字符型变量不能当作字符串变量来作用 char c; c=“a”; 但c=‘a’; • 字符串的存储结构:在末字符后面跟一个 ‘\0’   CHINA a 计算机工程学院 伍俊明

  18. 3.6 变量赋初值 • 变量初始化:在定义变量的同时给出其初值 例:int a=3; float f=3.56, g; char c1, c2=‘a’; /*只对c2赋了初值*/ int b=3, c=3, d=3; /*对a、b、c赋了初值*/ • 注意: • 不能通过连等方式赋初值 int b=c=d=3 • 初值只赋给‘=’前的一个变量 int b, c, d=3;/*只将d赋值为3,bc未赋初值*/ 计算机工程学院 伍俊明

  19. 3.7 各类型数值间的混合运算 • 假设:i是整型变量,f是float型变量,d是double型变量,e是long型变量。 • 试分析表达式: • 10+‘a’+ i*f - d/e • 数值型数据可以混合运算 • 整型:int,short,long • 浮点型:float,double,long double • 不同类型的数据混合运算时,必须先转换成同一类型的数据,然后才能运算,这种转换是自动进行的 double float 高 longe unsigned 低 char、 short int 计算机工程学院 伍俊明

  20. 3.8 算术运算符和算术表达式 一、C语言运算符简介 (1)算术运算符 (+ - * / %) (2)关系运算符 (><==>=<=!=) (3)逻辑运算符 (!&&||) (4)位运算符 (<< >> ~ |∧&) (5)赋值运算符 (=及其扩展赋值运算符) (6)条件运算符 (?:) (7)逗号运算符 (,) (8)指针运算符 (*和&) (9)求字节数运算符(sizeof) (10)强制类型转换运算符( (类型) ) (11)分量运算符(.->) (12)下标运算符([ ]) (13)其他 (如函数调用运算符()) 计算机工程学院 伍俊明

  21. 3.8 算术运算符和算术表达式 二、算术运算符和算术表达式 • 基本的算术运算符 • + (加法运算符,或正值运算符。如:3+5、+3) • - (减法运算符,或负值运算符。如:5-2、-3) • * (乘法运算符。如:3*5) • / (除法运算符。如:5/3,5.0/3.0) • % (模运算符,或称求余运算符,%两侧均应为整型数据,如:7%4的值为3)。 • 算术表达式及运算符的优先级: • 算术表达式是由运算对象(常量、变量、函数)、运算符和左右括号连接而成的式子 • 先乘除、后加减,同级运算自左向右 • 例:a*b/c-1.5+′a′ 计算机工程学院 伍俊明

  22. 3.8 算术运算符和算术表达式 二、算术运算符和算术表达式 • 强制类型转换运算符:(类型名)(表达式) 例:(double)a,(int)(x+y),(float)(5%3) 注意:(int)x+y只将x转换成整型数,然后与y相加 • 自增、自减运算符:只对变量实施,自右向左进行 • ++i,--i /*在使用i之前,先使i的值加(减)1*/ • i++,i-- /*在使用i之后,再使i的值加(减)1 */ • 假设:i等于3,分析执行(1)j=++i; (2)j=i++之后i和j之值 • 假设:i等于 3,分析执行j=-i++之后i和j之值 计算机工程学院 伍俊明

  23. 3.8 算术运算符和算术表达式 三、表达式使用中的问题说明 • ANSI未规定子表达式的求值顺序 如:a=f1()+f2() 中,先计算f1(),还是先计算f2()? 又如:i=3; 表达式(i++)+(i++)+(i++) 在有的系统中为12(i为6),有的系统中为9(i为6) • 为避免误解,建议增加有益的括号 如:i+++j应写成 (i++)+j的形式 • 一调用函数时,实参数的求值顺序,C标准并无统一规定 例:printf(“%d、 %d”, i, i++)有的输出3、3,有的输出4、3 建议:j=i++; printf(“%d、%d”, j, i) 计算机工程学院 伍俊明

  24. 3.9 赋值运算符与赋值表达式 一、赋值运算符= • 先计算表达式的值,然后将该值赋给变量 二、类型转换 • 如变量与表达式的类型不同,将自动转换 • 类型转换时,可能引起值的变化 • 有符号数与无符号数的相互转换 • 长型数转换为短型数 三、复合赋值运算符:+=,-=,*=,/=,%=,&=,^=,|= • a+=3 等价于a=a+3 • x*=y+8 等价于x=x*(y+8) • x%=y+3 等价于x=x%(y+3) 变量=表达式; 计算机工程学院 伍俊明

  25. 3.9 赋值运算符与赋值表达式 四、赋值表达式 • 赋值表达式也得到一个值,同时变量也得到一个值 例:a=(b=5)等价于a=b=5,相当于b=5; a=b;表达式为5 例:a=5+(c=6);结果c等于6,a等于11, 表达式值为11 例:a=(b=10)/(c=2);结果c为2,b为10,a为5,表达式为5 例:(a=3*5)=4*3先计算3*5,将15赋给a,然后计算4*3,将 12赋给a,最后表达式值为12 例:a初值为12,a+=a-=a*a; 结果a为-264,表达式为-264 先做a-=a*a,即a=a-a*a值 为12-144=-132 再做a+=a,即a=a+a值 为-264 • 分析print(“%d”, a=b);若b初值为3,b值赋给a,输出a值 变量=表达式 计算机工程学院 伍俊明

  26. 3.10 逗号表达式 • 逗号表达式 • 依次计算表达式1、表达式2、直到表达式n的值,并将表达式n的值作为逗号表达式的值 例:3+5,6+8其值为14 例:a=3*5,a*4先将a赋成15,然后求解a*15,并将60作为整个表达式的值 例:(a=3*5,a*4),a+5先计算出a的值为3*5,即15,再计算出a*4值 为60,再计算出a+5为20作为整个表达式的值 • 逗号运算符的优先级最低 例:x=(a=3,6*3)先将3赋给a,计算出6*3的值 作为括号中逗号表达式的值18,并赋给x,故x为18 例:x=a=3,6*3中x、a均赋值 为3,表达式值为18 表达式1,表达式2,……,表达式n, 计算机工程学院 伍俊明

  27. 第3章 数据类型、运算符与表达式 编写由给定半径计算球体积的程序。π取3.1416。 已知球体积公式为:V=4/3πR3,C表达式为:v=4/3*pi*r*r*r; /*程序功能: 计算球体积,演示自动类型转换规则 */ # define pi 3.1416 main() {  float r,v ;  printf(“r =”); scanf(“%f”,&r); v=4/3*pi*r*r*r; /*计算球体积:错误*/ printf(“\n v = %f”,v);  v=4.0/3*pi*r*r*r; /*计算球体积:正确*/ printf(“\n v = %f”,v); v=4*pi*r*r*r/3; /*计算球体积:正确*/ printf(“\n v = %f”,v); } • 作业(P67) • 3.6 • 3.9 • 3.10 • 3.11* • 3.12 • 案例分析 计算机工程学院 伍俊明

More Related