300 likes | 385 Views
第三章. C 数据及其表达式. 回顾. 程序是为执行一项任务而编写的有序指令集 算法是解决问题的具体方法和步骤 流程图是算法的图形化表现形式 C 程序的编译和运行过程 编译器将源程序转换成机器能理解的程序 连接器用于连接相关的目标文件以生成可执行程序 进制间的转换 补码. 目标. 理解变量和常量的含义 熟悉基本数据类型 - int 、 char 、 float 和 double 使用算术运算符 理解赋值运算符、逗号运算符 理解类型转换. C 语言中的基本元素. 程序. 常量是在程序中保持不变的量. 指令. 常量用于定义具有如下特点的数据:
E N D
第三章 C数据及其表达式
回顾 • 程序是为执行一项任务而编写的有序指令集 • 算法是解决问题的具体方法和步骤 • 流程图是算法的图形化表现形式 • C程序的编译和运行过程 • 编译器将源程序转换成机器能理解的程序 • 连接器用于连接相关的目标文件以生成可执行程序 • 进制间的转换 • 补码
目标 • 理解变量和常量的含义 • 熟悉基本数据类型- int、char、float 和 double • 使用算术运算符 • 理解赋值运算符、逗号运算符 • 理解类型转换
C语言中的基本元素 程序 常量是在程序中保持不变的量 指令 常量用于定义具有如下特点的数据: • 在程序中保持不变 • 在程序内部频繁使用 • 需要用比较简单的方式替代某些值 标识符 关键字 常量 运算符 分隔符 等
内存 变量 程序 编写程序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修改这个数据的值。 10 9.5 0.5 存储 Rate 通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需要显示数据或执行数据操纵。 Rate * 5% 将值存储为DiscAmt Rate-DiscAmt 将值存储为Result
声明和使用变量 • 声明变量: Datatype variablename; • 定义时初始化变量: Datatype variablename = value; • 定义后初始化变量: variablename = value; 给变量赋值,除了给一个直接的值以外,还可以通过计算获得。
变量命名 • 变量的命名规则: • 变量名可以由字母、数字和 _(下划线)组合而成 • 变量名不能包含除 _ 以外的任何特殊字符,如:%、# 、逗号、空格等 • 变量名必须以字母或_(下划线)开头 • 变量名不能包含空白字符(换行符、空格和制表符称为空白字符) • C 语言中的某些词(例如 int 和 float 等)称为保留字,具有特殊意义,不能用作变量名 • C 语言区分大小写,因此变量 price 与变量 PRICE 是两个不同的变量 在 C 语言中,变量命名需要遵循一定的规则 有效名称 无效名称 principal 123rate lastname zip code cost_price city currency$ marks_3 discount%
基本数据类型 数据 数据类型 数值 非数值 Africa 2.175 char 整型 非整型 123 9/12/2003 int float The quick brown fox 整型 非整型 Jackie Chan short int double 非数值 数值 long int 999 9002.12 数据属于不同类别 TRUE
使用整型变量 • 声明: int page_number; long int population; unsigned int age; • 可按如下方式初始化: page_number=0; int max_marks = 100; 三种整型常量(整常熟)表示法: 十进制 :16 八进制 :016 十六进制 :0x16 在同一语句中可以声明多个类型相同的变量: int page_number, copies, paper_width;
单精度浮点型 float 在 C语言中用于存储单精度浮点数 • 声明: float selling_price; • 初始化: float selling_price = 11.3; selling_price = 65.90; float 32 位 10-38至10+38 ,7位有效数字 两种浮点型(实数)常量表示法: 十进制形式 :41.235, -12.0, .5 指数形式 :2e4, 1.8e-3, -123e-6, 3.5e+4
内存 float double 双精度浮点型 213.5671435568967 • 声明: • double pressure_level; • 初始化: • pressure_level = 213.5671435568967; • double dvalue = 35.4; 64位 16位有效数字 取值范围:10-308至 10308
字符型 在线保险单 年龄:_____ 保险总额:_____ 性别:_____ 数值型 23 int/float 98340 字符型 ' M ' char
"2" ' ' '5' 'p' '$' 有效的字符型值 '2' 正确 X '2' + '2' = 4
声明: char sex; • 初始化: sex=‘m’; char sex=‘m’; 字符在内存中按照ASCII码存放的;
字符型数据和整型数据通用 • 在0~255范围内,字符型数据和整型数据是通用的。字符型数据可以以字符形式输出,也可以以整数形式输出 main() { char c1,c2=‘B’; int a1; c1=97; a1=‘b’-32; printf("%c,%d\n",c1,c1); printf("%c,%d\n",a1,a1); } 运行结果: a,97 B,66
算术运算符 算术 运算符 操作数 操作数 一元 二元运算符 二元 + % * / - 5/3=? 5%3=?
算术运算符 算术 num++ num=num+1 ++ ++num --num num++ num-- 一元 前缀 后缀 -- num=num-1 num-- 二元
算术运算符 num2 = 6; num1 = 6; num1 = num1 + 1; num2 = num1; num2 = 5; num1 = 6; num2 = num1; num1 = num1 + 1; num1 = num1 - 1; num2 = num1; num2 = 4; num1 = 4; num2 = num1; num1 = num1 - 1; num2 = 5; num1 = 4;
运算符的优先级和结合性 • 优先级 1. C语言规定了各种运算的优先级。 2. 优先级的规定符合思维习惯。 例如在算术运算中,先 * / 后 + -。 3. 利用()提高程序的可读性。 • 结合性 运算符号和运算对象的结合方向。 例如算术运算符的结合性是从左向右,所以7-5是用7减去5得2,而不是5减去7得-2。
赋值运算 赋值表达式: 将表达式的值存入变量所表示的内存单元中。 变量=表达式 赋值运算符:= 复合赋值运算符: += <<= -= >>= *= &= /= ∧= %= |= (结合性← ) a+=b a=a+b 已知:int a=12; a+= a-=a * a; (1)a=a-a*a=-132 (2)a=a+(-132)
说明: • 结合方向:自右向左 • 优先级:14 • 左侧必须是变量,不能是常量或表达式 • 例 3=x-2*y; • a+b=3; • 赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型 例 int i; i=2.56; //结果i=2; 例: a=12; a+=a-=a*a • 赋值表达式的值与变量值相等,且可嵌套 • 例float f; • int i; • i=10; • f=i; • 则f=10.0 例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) //表达式值为5,a,b,c值为5 // b=5;a=5 //表达式值11,c=6,a=11 例: int a=2; a%=4-1; a+=a*=a-=a*=3; //表达式值10,a=10,b=4,c=6 //表达式值5,a=5,b=10,c=2 < >
逗号运算 • 逗号表达式的一般形式 表达式1,表达式2,……,表达式n 将两个以上的表达式连接成逗号表达式。 • 逗号表达式的运算过程 是从左向右,依次对表达式求值。 • 逗号表达式的值 逗号表达式的值是表达式n的值。 例:x= a=3 * 5,a* 4 ;则:x=15,a=15 。 x= (a=3*5,a*4);则:x=60, a =15 。
说明: • 结合性:从左向右 • 优先级:15 • 逗号表达式的值:等于表达式n的值 • 用途:常用于循环for语句中 • 例 a=3*5,a*4 • a=3*5,a*4,a+5 • 例 x=(a=3,6*3) • x=a=3,6*a • 例 a=1;b=2;c=3; • printf(“%d,%d,%d”,a,b,c); • printf(“%d,%d,%d”,(a,b,c),b,c); //a=15,表达式值60 //a=15,表达式值20 //赋值表达式,表达式值18,x=18 //逗号表达式,表达式值18,x=3 //1,2,3 //3,2,3
类型转换 • 自动类型转换 • 原则:把表示范围小的类型的值转换到表示范围大的类型的值 • short int long float double • 强制类型转换 • 语法:(类型名) 变量或数值 • 例如:int a = 5, b = 3;float qu = (float)a / b; qu=a/b;
已知:int i=3; long e=4; float f=1.5; douible d=2.0; f = 10 + ‘a’ + i * f - d / e f = 107 + 4.5- 0.5 f = 111.5 - 0.5 f = 111.0
总结 1 • 常量是在程序中不能被更改的值;而变量在程序中可以被更改的,通过变量可以引用存储在内存中的数据 • C语言中的基本数据类型包括整型、单精度浮点型、双精度浮点型和字符型 • 整型分为短整型、整型、长整型,每种整型又可分为有符号型和无符号型
总结 2 • 单精度浮点型和双精度浮点型变量可以存储实数,但双精度型取值范围要比单精度型大的多 • 字符型变量可以存储单个字符,其值是该字符的ASCII 码 • 算术运算符提供运算功能,包括+、-、*、/、%、++和— • 逗号运算符于赋值运算符的优先级与结合性