本章教学内容: 3 .1 c 语言的数据类型 3 .2 常量与变量 3 .3 整型数据 3 .4 ...

27
1 计计计计计计计 计计计计 计计计计计计 3.1 C 计计计计计计计 3.2 计计计计计 3.3 计计计计 3.4 计计计计计 3.5 计计计计计 3.6 计计计计计 3.7 计计计计计计计计计计计计计 3.8 计计计计计计计计计计计 3.9 计计计计计计计计计计 3.10 计计计计计计计计计计计 计 3 计 计计计计 计计计计计计计 计计计计 计计计计计计 计计计计计 计计计计计 计计计计

Upload: honorato-hurley

Post on 30-Dec-2015

185 views

Category:

Documents


5 download

DESCRIPTION

本章教学内容: 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 语言的数据类型. - PowerPoint PPT Presentation

TRANSCRIPT

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

1计算机工程学院 伍俊明地

本章教学内容: 3.1 C 语言的数据类型 3.2 常量与变量 3.3 整型数据 3.4 浮点型数据 3.5 字符型数据 3.6 变量赋初值 3.7 各类数值型数据间的混合运算 3.8 算术运算符和算术表达式 3.9 赋值语句和赋值表达式 3.10 逗号运算符和逗号表达式

第 3 章 数据类型、运算符与表达式本章重点: 基本数据类型 常见运算符 算术表达式 赋值语句

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

2

3.1 C 语言的数据类型数据类型——描述数据的存储结构、取值范围、操作种类等C 语言中的数据类型

计算机工程学院 伍俊明

数据类型数据类型 构造类型构造类型

指针类型指针类型空类型(无值类型) 空类型(无值类型) voidvoid

枚举类型 枚举类型 enumenum

数组类型数组类型

结构类型 结构类型 structstruct

联合类型 联合类型 unionunion

基本类型基本类型整型 整型 intint

字符型 字符型 charchar

实型(浮点型)实型(浮点型)单精度实型单精度实型 floatfloat

双精度实型双精度实型 doubledouble

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

3

3.2 常量与变量3.2.1 常量与符号常量

常量:在程序运行的过程中其值不能被改变的量常量区分为不同的类型:

计算机工程学院 伍俊明

整型 100 , 125 , -100 , 0实型 3.14 , 0.125 , -3.789字符型 ‘ a’, ‘b’,‘ 2’字符串 “ a”, “ab”, “ 1232”

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

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);}

• 说明:说明: PIPI 已经定义为符号常量,已经定义为符号常量,以后给它赋值是错误的,如以后给它赋值是错误的,如

PI=3.14;PI=3.14;

所有符号常量将在编译前进行替换!所有符号常量将在编译前进行替换!

3-1.CPP

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

5

3.2 常量与变量3.2.2 变量

变量:在程序执行的过程中其值可以改变的量变量代表内存中具有特定属性的一个存储单元,该单

元的编号就是内存地址,该单元中存放的数据就是变量的值。为方便使用,可给该单元取一个名字,叫做变量名。

计算机工程学院 伍俊明

2.0

r变量名

变量值

存储单元

210006

存储单元

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

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;

计算机工程学院 伍俊明

• 变量定义的一般形式:变量定义的一般形式: 数据类型 变量列表;数据类型 变量列表;

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

7

3.3 整型数据一、 整型数据的表示方法

十进制数: 123 , -456 , 4八进制数: 0123 (等于十进制数 83 ), -011十六进制数: 0x123 (等于十进制数 291 ), -0x34

二、 整型数据在内存中的存放形式TC 中占 2 个字节, VC++6.0 中占 4 个字节正数原码表示,负数补码表示

计算机工程学院 伍俊明

i

j

10

-10

0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0

1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0

符号位

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

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]

计算机工程学院 伍俊明

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

9

3.3 整型数据

计算机工程学院 伍俊明

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

10

3.3 整型数据四、整型变量的定义——一般置于函数的开头

int a, b;

unsigned short c,d;

long e, f;

例 3.2 整型变量的定义与使用

例 3.3 整型数据的溢出

计算机工程学院 伍俊明

3-2.CPP

3-3.CPP

整型数据的运算: 加: + 减: - 乘: * 整除: / 取余: %

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

11

3.3 整型数据五、整型常量的类型

范围在 -32768 ~ +32767 之间的默认为 int 型,超出者默认为 long int 型;

一些编译系统中 short int 与 int 型数据在内存中存储结构相同,因此两者没有区别;

整型常量后面加一个字母 u 或 U ,如 12345u ,表示无符号整数, -12345u 按补码 53191 视为无符号整数;

整型常量后面加一个字母 l 或 L ,如 123l 、 456L ,表示长整数。

计算机工程学院 伍俊明

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

12

3.4 浮点型数据一、浮点型常量的表示方法

十进制小数表示法: 0.123 , -2.345 , 0.0

指数形式: 123e3 , -3.456E-2

二、浮点型变量的存储结构单精度浮点数占 4 个字节,双精度浮点数占 8 个字节浮点数按指数方式存储

计算机工程学院 伍俊明

+ .314159 1

符号位 小数部分 指数部分 3.14159

1e31e3 、、 1.8e-31.8e-3 、、 -123e-6-123e-6 、、 -.1e-3-.1e-3e3e3 、、 2.1e3.52.1e3.5 、、 .e3.e3 、、 e e

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

13

3.4 浮点型数据三、浮点数的分类

浮点型数据分单精度、双精度和长双精度三类

浮点型变量的定义及浮点数的舍入误差 float x=3.14159, y;

double u, v=-1.320;

long double t; 计算机工程学院 伍俊明

类型 位数 范围 有效数字float 32 1010-37 -37 ~ ~ 101038 38 66~~7 7 位位double 64 1010-307-307~~1010308308 1515~~16 16 位位long double 128 1010--

49314931~~101049324932

1818~~19 19 位位

3-4.CPP

运行结果: 123456.789e5

说明:说明:一个浮点型变量只能保证的有效数字是 7 位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数

说明:说明:一个浮点型变量只能保证的有效数字是 7 位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数

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

14

3.4 浮点型数据四、浮点数的类型

C 语言编译系统将浮点数视为双精度浮点数来处理。例: f 是一个浮点型变量

f=2.45678*4523.65;

• 系统先把 2.45678 和 4523.65 作为双精度数,然后进行相乘的运算,得到的乘也是一个双精度数。最后取其前 7 位赋给浮点型变量 f 。如是在数的后面加字母 f 或 F (如 1.65f, 654.87F ),这样编译系统就会把它们按单精度( 32 位)处理

计算机工程学院 伍俊明

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

15

3.5 字符型数据一、字符常量

字符常量:用一对单引号括起来的单个字符。 正确: ‘ a’ ,‘ A’ ,‘ 6’ ,‘ $’ ,‘ ?’ ,‘ \n’

错误: ‘ abc’ 、“ a”

控制字符(转义符):以反斜杠 ‘ \’ 开头\n 换行\t 横向跳格\r 回车\\ 反斜杠\ddd ddd 表示 1 到 3 位八进制数字\xhh hh 表示 1 到 2 位十六进制数字

计算机工程学院 伍俊明

3-5.CPP

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

16

3.5 字符型数据二、字符变量 char c1, c2=‘b’, c3;

c1=‘a’; c3=‘ ’;

三、字符数据的存储格式一个字符在内存中占用一个字节字符以 ASCII 码方式存储字符可以 ASCII 码参与运算,大小写字符可以转换

计算机工程学院 伍俊明

97 98

c1 c2

01100001 01100010

3-6.CPP 3-7.CPP 3-7A.CPP

• 说明:说明:程序的作用是将两个小写字母 a 和 b 转换成大写字母 A 和 B 。从 ASCII 代码表中可以看到每一个小写字母比它相应的大写字母的 ASCII码大32。C语言允许字符数据与整数直接进行算术运算。     

• 说明:说明:程序的作用是将两个小写字母 a 和 b 转换成大写字母 A 和 B 。从 ASCII 代码表中可以看到每一个小写字母比它相应的大写字母的 ASCII码大32。C语言允许字符数据与整数直接进行算术运算。     

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

17

3.5 字符型数据四、字符串常量

字符串常量:用一对双引号括起来的若干字符 “Hello” , “¥ 1234.56” ,“ a”

字符型变量不能当作字符串变量来作用 char c;

c=“a”; 但 c=‘a’;

字符串的存储结构:在末字符后面跟一个 ‘ \0’

计算机工程学院 伍俊明

C H I N A \0 a \0

CHINA a

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

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未赋初值 */

计算机工程学院 伍俊明

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

19

3.7 各类型数值间的混合运算数值型数据可以混合运算 整型: int , short , long 浮点型: float , double , long double

不同类型的数据混合运算时,必须先转换成同一类型的数据,然后才能运算,这种转换是自动进行的

计算机工程学院 伍俊明

double float

longe

unsigned

int char 、 short

• 假设:假设: i是整型变量, f 是 float 型变量, d 是 double 型变量, e 是 long 型变量。

试分析表达式: 10+‘a’+ i*f - d/e    

• 假设:假设: i是整型变量, f 是 float 型变量, d 是 double 型变量, e 是 long 型变量。

试分析表达式: 10+‘a’+ i*f - d/e    

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

20

3.8 算术运算符和算术表达式一、 C 语言运算符简介

(1)算术运算符 ( + - * / %)(2)关系运算符 (><==>=<=!=)(3)逻辑运算符 (!&& ||)(4)位运算符 ( << >> ~ |∧&)(5)赋值运算符 (=及其扩展赋值运算符)(6)条件运算符 (?:)(7)逗号运算符 ( ,)(8)指针运算符 ( *和&)(9)求字节数运算符(sizeof)(10)强制类型转换运算符( ( 类型) )(11)分量运算符(. ->)(12)下标运算符([ ])(13)其他 (如函数调用运算符())

计算机工程学院 伍俊明

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

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′

计算机工程学院 伍俊明

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

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 之值

计算机工程学院 伍俊明

3-8.CPP

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

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)计算机工程学院 伍俊明

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

24

3.9 赋值运算符与赋值表达式一、赋值运算符 =

先计算表达式的值,然后将该值赋给变量二、类型转换

如变量与表达式的类型不同,将自动转换类型转换时,可能引起值的变化

有符号数与无符号数的相互转换 长型数转换为短型数

三、复合赋值运算符: += , -= , *= , /= , %= , &= , ^=, |=

a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8) x%=y+3 等价于 x=x%(y+3)

计算机工程学院 伍俊明

变量 = 表达式;

3-9.CPP

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

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 值

计算机工程学院 伍俊明

变量 = 表达式

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

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 ,

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

27

第 3 章 数据类型、运算符与表达式作业( P67 ) 3.6 3.9 3.10 3.11* 3.12

案例分析

计算机工程学院 伍俊明

编写由给定半径计算球体积的程序。 π 取 3.1416 。已知球体积公式为: V=4/3πR3,C 表达式为:v=4/3*pi*r*r*r;/* 程序功能: 计算球体积,演示自动类型转换规则 */# define pi 3.1416main(){ 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);}

   

编写由给定半径计算球体积的程序。 π 取 3.1416 。已知球体积公式为: V=4/3πR3,C 表达式为:v=4/3*pi*r*r*r;/* 程序功能: 计算球体积,演示自动类型转换规则 */# define pi 3.1416main(){ 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);}