《第2章数据类型运算符和表达式精选文档.ppt》由会员分享,可在线阅读,更多相关《第2章数据类型运算符和表达式精选文档.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2章章 数据类型运算符和表达数据类型运算符和表达式式1本讲稿第一页,共四十七页程序的概念程序的概念程序:是按某种顺序排列的,使计算机能执行某种任务的指程序:是按某种顺序排列的,使计算机能执行某种任务的指令集合。令集合。程序程序=算法算法+数据结构数据结构程序设计语言:编写计算机程序所用的语言,程序设计语言程序设计语言:编写计算机程序所用的语言,程序设计语言按语言的级别可分为低级语言和高级语言。按语言的级别可分为低级语言和高级语言。常见高级语言:常见高级语言:BASIC、FORTRAN、PASCAL、C、C+、JAVA等。等。源程序源程序机器语言目标程序机器语言目标程序可执行程序可执行程序汇
2、编或编译程序汇编或编译程序2本讲稿第二页,共四十七页第第2章章 数据类型、运算符和表达式数据类型、运算符和表达式 3本讲稿第三页,共四十七页2.1:一个简单的:一个简单的C程序例子程序例子#include/*函数功能:计算两个整数相加之和函数功能:计算两个整数相加之和 入口参数:整型数据入口参数:整型数据a和和b 返回值:返回值:整型数整型数a和和b之和之和*/int Add(int a,int b)return(a+b);/*主函数主函数*/main()int x,y,sum=0;printf(Input two integers:);scanf(%d%d,&x,&y);/*输入两个整型数输
3、入两个整型数x和和y*/sum=Add(x,y);/*调用函数调用函数Add计算计算x和和y相加之和相加之和*/printf(sum=%dn,sum);/*输出输出x和和y相加之和相加之和*/并列的两个函数并列的两个函数并列的两个函数并列的两个函数其中一个是其中一个是其中一个是其中一个是程序的入口程序的入口程序的入口程序的入口程序注释程序注释程序注释程序注释4本讲稿第四页,共四十七页说明说明1.C程序由函数构成。程序由函数构成。2.一个一个C程序有且只有一个程序有且只有一个main函数,但可函数,但可有多个自定义函数。有多个自定义函数。3.C程序总是从程序总是从main函数开始执行函数开始执行
4、4.每个每个C语句均以分号结束。语句均以分号结束。5.养成良好的程序书写风格。养成良好的程序书写风格。如:一行一条语句如:一行一条语句 在适当的位置加注释在适当的位置加注释 /*/5本讲稿第五页,共四十七页2.2 C程序常见符号分类程序常见符号分类关键字(关键字(Keyword)n又称为保留字,又称为保留字,C语言中预先规定的具有固定含义的一些单词语言中预先规定的具有固定含义的一些单词n数据类型修饰符数据类型修饰符int,控制语句控制语句return等等 标识符(标识符(Identifier)n系统预定义标识符系统预定义标识符,main,printf 等等 n用户自定义标识符用户自定义标识符,
5、Add,x,y 等等运算符(运算符(Operator)n34种,详见附录种,详见附录2 分隔符(分隔符(Separator)n空格、回车空格、回车/换行、逗号等换行、逗号等 其它符号其它符号 n大花括号大花括号“”和和“”通常用于标识函数体或者一个语句块通常用于标识函数体或者一个语句块 n“/*”和和“*/”是程序注释所需的定界符是程序注释所需的定界符 数据(数据(Data)n变量(变量(Variable)n常量(常量(Constant)6本讲稿第六页,共四十七页2.3 数据类型数据类型 2.3.1 引入数据类型的目的引入数据类型的目的便于对数据按不同方式和要求进行处理便于对数据按不同方式和要
6、求进行处理不同类型的数据代表不同的不同类型的数据代表不同的数据表示形式数据表示形式合法的取值范围合法的取值范围占用内存空间大小占用内存空间大小可参与的运算种类可参与的运算种类7本讲稿第七页,共四十七页单单 精精 度度 实实 型型 (float)双精度实型双精度实型 (double)整型整型 (int)字符型字符型 (char)枚举类型枚举类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型实型实型基本类型基本类型构造类型构造类型空类型空类型 (void)指针类型指针类型数据类型数据类型8本讲稿第八页,共四十七页2.3.3 类型修饰符类型修饰符shortshortshortshort i
7、ntint,短整数,一般短整数,一般短整数,一般短整数,一般2 2个字节长个字节长个字节长个字节长。通常简写为通常简写为通常简写为通常简写为shortshortlonglong long long intint,长整数,一般是长整数,一般是长整数,一般是长整数,一般是4 4个字节长。通常简写为个字节长。通常简写为个字节长。通常简写为个字节长。通常简写为longlong long long doubledouble,长双精度(高精度)浮点数,一般是,长双精度(高精度)浮点数,一般是,长双精度(高精度)浮点数,一般是,长双精度(高精度)浮点数,一般是1010个个个个字节长。字节长。字节长。字节长。
8、signedsigned 用来修饰用来修饰用来修饰用来修饰charchar、intint、shortshort和和和和longlongunsignedunsigned 用来修饰用来修饰用来修饰用来修饰charchar、intint、shortshort和和和和longlong9本讲稿第九页,共四十七页2.3.4 标识符命名标识符命名 是由字母、下划线和数字三种字符组成;是由字母、下划线和数字三种字符组成;第一个字符必须为字母或下划线;第一个字符必须为字母或下划线;不允许与关键字重名;不允许与关键字重名;C区分大小写。区分大小写。例:例:a3B _b +a b?Int10本讲稿第十页,共四十七页
9、2.4 常量常量C程序中数据以程序中数据以常量常量和和变量变量形式表示形式表示定义:定义:程序执行过程中值不发生改变的数据程序执行过程中值不发生改变的数据11本讲稿第十一页,共四十七页 C C语言中可以用语言中可以用3 3种数制表示整型常量种数制表示整型常量 (1)十进制整型常量。)十进制整型常量。(2)十六进制整型常量。(以)十六进制整型常量。(以0 x开头)开头)例:例:0 x123 (3)八进制整型常量。)八进制整型常量。(以(以0开头)开头)例:例:0123 如果在整型常量加上后缀如果在整型常量加上后缀L L或或l l表示该常量为长整型常量,加上表示该常量为长整型常量,加上后缀后缀U
10、U或或u u表示无符号整型常量。表示无符号整型常量。例:例:123l 123l 2.4.1 整型常量整型常量 例:例:-18 0789 0 x1f12本讲稿第十二页,共四十七页2.4.2 实型常量实型常量 (1 1)小数表示法小数表示法 :例:例:-2.5-2.5、3.03.0、4.4.、.34.34(2 2)科学计数法科学计数法 :例:例:-2.510-3 -2.5E-3 注意字母注意字母e(或(或E)之前必须有数字,且)之前必须有数字,且e后面指数必须为后面指数必须为整数整数 例:例:1103 E3 1E3.0 1E3 只能用十进制表示。只能用十进制表示。13本讲稿第十三页,共四十七页2.
11、4.3 字符常量字符常量以单引号括起来的字符以单引号括起来的字符 A 1特殊字符常量:特殊字符常量:n 换行换行 r 回车回车 b 退格退格 t 制表(横向跳格)制表(横向跳格)单引号(单撇号)单引号(单撇号)双引号(双撇号)双引号(双撇号)ddd 13位八进制数所代表的位八进制数所代表的ASCII码字符码字符 xhh 12位十六进制数所代表的位十六进制数所代表的ASCII码字符码字符 f 走纸换页走纸换页 反斜杠字符反斜杠字符例:例:101 x41 A14本讲稿第十四页,共四十七页2.4.4 字符串常量字符串常量由一对双引号括起来(由一对双引号括起来(“”“”)的字符序列。)的字符序列。例:
12、例:“Welcome”“Welcome”“HELLO”“HELLO”说明:说明:(1 1)字符序列中的字符个数称字符串长度。)字符序列中的字符个数称字符串长度。例:课后例:课后P47P47,4 4 (2)“”(2)“”称为空串,即字符串长度为称为空串,即字符串长度为0 0。(3 3)字符串常量中的字符是连续存储的,并在最后自动)字符串常量中的字符是连续存储的,并在最后自动加上字符加上字符00作为字符串结束标志。作为字符串结束标志。15本讲稿第十五页,共四十七页2.4.5 符号常量(宏常量)符号常量(宏常量)定义:用一个标识符代表一个常量。定义:用一个标识符代表一个常量。#include#def
13、ine PI 3.1415926void main()float s,r,l;r=10.0;l=2.*PI*r;s=PI*r*r;printf(l=%f s=%fn,l,s);printf(PI=%fn,PI);#define 标识符标识符 字符串字符串16本讲稿第十六页,共四十七页2.4.6 枚举常量枚举常量当某些量仅由有限个数值组成时,可用枚举类型表示。当某些量仅由有限个数值组成时,可用枚举类型表示。枚举类型定义:枚举类型定义:enum 枚举标记枚举标记枚举常量枚举常量1,枚举常量枚举常量n;例:例:enum weeks SUN,MON,TUE,WED,THU,FRI,SAT;enum w
14、eeks today;说明:说明:中的每个符号代表一个整数值,而不是字符串;中的每个符号代表一个整数值,而不是字符串;17本讲稿第十七页,共四十七页2.5 变量变量 定义:定义:随着程序的执行,值会发生改变的量。随着程序的执行,值会发生改变的量。变变量量的的本本质质:定定义义一一个个变变量量就就是是在在内内存存开开辟辟若若干干内存单元,用来存放相应类型数据。内存单元,用来存放相应类型数据。变量的属性三要素:变量名,变量的地址变量的属性三要素:变量名,变量的地址,变量的值,变量的值。变量使用原则:变量使用原则:“先定义,后使用先定义,后使用”2.5.1 变量声明与初始化变量声明与初始化18本讲稿
15、第十八页,共四十七页1 整型变量整型变量 用于存放整型数据的变量称为整型变量。用于存放整型数据的变量称为整型变量。C语语言言中中,可可以以定定义义基基本本整整型型、长长整整型型、短短整整型型和和无无符符号号整整型型等等4种种类类型型的的整整型型变量。变量。(1)基本整型变量基本整型变量 int 变量表列;变量表列;(2)长整型)长整型 long int 变量表列;变量表列;(3)短整型)短整型 short int 变量表列;变量表列;(4)无符号整型)无符号整型 unsigned int/long/short 变量表列;变量表列;例:例:19本讲稿第十九页,共四十七页2 实型变量实型变量 用于
16、存放实型数据的变量称为实型变量用于存放实型数据的变量称为实型变量。实型变量实型变量 单精度单精度 7 7位有效数字位有效数字 双精度双精度 1516位有效数字位有效数字单精度变量的定义:单精度变量的定义:float 变量表列;变量表列;例:例:float a1,a2;双精度变量的定义:双精度变量的定义:double 变量表列变量表列;例:例:double b1,b2;20本讲稿第二十页,共四十七页 char 变量表列;变量表列;例:例:char c1,c2;说明:说明:字符变量存放的是字符的字符变量存放的是字符的ASCII码,因此字符变量可以和整码,因此字符变量可以和整型变量通用型变量通用 例
17、例:A+1 C-A 例例2.4 e2_4.c 例例2.5 e2_5.c3 字符型变量字符型变量 21本讲稿第二十一页,共四十七页2.5.2 const类型修饰符类型修饰符const修饰的标识符是常量,因此需在定义时赋初值修饰的标识符是常量,因此需在定义时赋初值 const float pi=3.1425926;const常量与宏常量相比的优点是什么?常量与宏常量相比的优点是什么?nconst常量有数据类型常量有数据类型n某些集成化调试工具可以对某些集成化调试工具可以对const常量进行调常量进行调试试22本讲稿第二十二页,共四十七页2.5.3 注意事项注意事项1.变量须变量须“先定义,后使用先
18、定义,后使用”;2.int型变量默认为有符号整型变量;型变量默认为有符号整型变量;3.可用可用sizeof计算类型或变量所占内存的计算类型或变量所占内存的字节数。字节数。sizeof(类型名)(类型名)sizeof 变量名变量名 例例2.3 e2_3.c23本讲稿第二十三页,共四十七页4.实型数据在内存中的存储方式实型数据在内存中的存储方式定点表示法:约定小数点隐含在某一固定位置上定点表示法:约定小数点隐含在某一固定位置上浮点表示法浮点表示法:小数点位置可以任意移动:小数点位置可以任意移动N=M2J 数符数符尾数尾数阶符阶符阶码阶码24本讲稿第二十四页,共四十七页阶符阶符阶码阶码数符数符尾数尾
19、数例:例:256.8125=(100000000.1101)B=0.1000000001101 2 1001 0 0001001 0 1000000 00110100 000000005.float 提供提供7位有效数字位有效数字 double 提供提供16位有效数字位有效数字 例例2.6:e2_6.c25本讲稿第二十五页,共四十七页2.6 运算符和表达式运算符和表达式 程序的核心程序的核心处理处理输入输入输出输出26本讲稿第二十六页,共四十七页 1.1.运算符的优先级运算符的优先级 运算符的优先级是指不同的运算符在表达式中进行运算的先后次序。运算符的优先级是指不同的运算符在表达式中进行运算的
20、先后次序。例:例:a+b*c a+b*c 2.2.运算符的结合性运算符的结合性 当当一一个个运运算算对对象象的的两两侧侧的的运运算算符符的的优优先先级级相相同同时时,运运算算的的结结合合方方向向称称为结合性。为结合性。自左向右:自左向右:+、-、*、/自右向左:自右向左:2.6.1 运算符的优先级和结合性运算符的优先级和结合性27本讲稿第二十七页,共四十七页基本算术运算符有:基本算术运算符有:+-*/+-*/%:%:求余求余 9%4 11%3 9%4 11%3说明:说明:(1 1)两个整型数据相除依然得整型数据;两个整型数据相除依然得整型数据;例:例:5/3=1 2/3=0 (1/3)+(1/
21、3)+(1/3)(2 2)求余运算只适用于整型数据,运算结果的符号与被除)求余运算只适用于整型数据,运算结果的符号与被除数的符号相同。数的符号相同。例:例:13%-7 6 13%-7 6 -13%7 -6 -13%7 -6 (3)(3)优先级:优先级:(4 4)结合性:自左至右)结合性:自左至右2.6.2 算术运算符及算术表达式算术运算符及算术表达式28本讲稿第二十八页,共四十七页例:例:函数名函数名功功 能能函数名函数名功功 能能sqrt(x)计计算算x的平方根,的平方根,x应应大于等大于等于于0 exp(x)计计算算ex的的值值fabs(x)计计算算x的的绝对值绝对值pow(x,y)计计算
22、算xy的的值值log(x)计计算算lnx的的值值sin(x)计计算算sinx的的值值,x为为弧度弧度值值log10(x)计计算算lgx的的值值cos(x)计计算算cosx的的值值,x为为弧度弧度值值29本讲稿第二十九页,共四十七页C C语言中的关系运算符共有六种,它们是:语言中的关系运算符共有六种,它们是:=b x=(y+z)m!=n p=q说明:说明:(1)关系运算结果有两个:)关系运算结果有两个:“真真”-1 “假假”-0 例:例:int x=10,y=5;xj 4kj+k31本讲稿第三十一页,共四十七页2.6.4 逻辑运算逻辑运算在在C语语言言中中,逻逻辑辑常常量量只只有有两两种种:值值
23、非非零零表表示示“真真”,值值为为零零表示表示“假假”。其基本的逻辑运算符有以下。其基本的逻辑运算符有以下3个:个:&(逻辑与)(逻辑与)两个量都为真时为真(两个量都为真时为真(1),否则为假(),否则为假(0)|(逻逻辑辑或或)两两个个量量中中只只要要有有一一个个为为真真时时为为真真(1),只有都为假时为假(只有都为假时为假(0)!(逻辑非)(逻辑非)一个量为真时为假(一个量为真时为假(0),假时为真(),假时为真(1)32本讲稿第三十二页,共四十七页“与与”运算规则运算规则 0&0=0 0&非零非零=0 非零非零&0=0 非零非零&非零非零=1“或或”运算规则运算规则 0|0=0 0|非零
24、非零=1 非零非零|0=1 非零非零|非零非零=1“非非”运算规则运算规则 !0=1 !非零!非零=0例:例:int i=5,j=0;float k=3.6;i&j k|j33本讲稿第三十三页,共四十七页 (1 1)C语言对逻辑表达式求解,并不是所有的运算语言对逻辑表达式求解,并不是所有的运算符都被执行,只是在必须执行后面的运算符才能求出符都被执行,只是在必须执行后面的运算符才能求出表达式时,才执行其后的运算表达式时,才执行其后的运算,否则将不执行后面的运否则将不执行后面的运算。算。例:例:int a=1,b=2,c=3,d=4;int m=1,n=1;(m=ab)&(n=cd)(2)优先级:
25、!优先级:!&|(3)结合性:结合性:&|自左向右自左向右 !自右向左自右向左 说明:说明:34本讲稿第三十四页,共四十七页 2.6.5 赋值运算赋值运算功能:功能:将表达式的值传递给变量将表达式的值传递给变量赋值运算符:赋值运算符:“”。赋值表达式为:赋值表达式为:变量名表达式变量名表达式例:例:int x,y;x=10;y=x+5;说明:说明:(1)在)在C语言中,语言中,“”为赋值运算符,而不是等号;为赋值运算符,而不是等号;(2)赋值运算符)赋值运算符“”左边左边必须是变量名必须是变量名,不能是表达式;,不能是表达式;例:例:x+y=5;35本讲稿第三十五页,共四十七页 (3)赋值运算
26、符赋值运算符“”两端的类型不一致时,系统将表达式两端的类型不一致时,系统将表达式的类型自动转换为左侧变量的类型。的类型自动转换为左侧变量的类型。例:例:int k;k=3.5;(4)(4)赋值表达式有值,可以进一步参与运算赋值表达式有值,可以进一步参与运算 例:例:i=4+(j=7)i=(j=3)+(k=8)(5)结合性结合性:自右至左自右至左,当连续有多个赋值运算时,是从右至左当连续有多个赋值运算时,是从右至左逐个赋值逐个赋值.例:例:x=y=5;int x;double y;y=x=3.14;36本讲稿第三十六页,共四十七页C语言允许在赋值运算符之前加上其它运算符,构成复合语言允许在赋值运
27、算符之前加上其它运算符,构成复合的赋值运算符的赋值运算符 例:例:a=a+10 a+=10 x=x*(y+1)x*=y+1 常用复合赋值运算符常用复合赋值运算符 +=-=*=/=%=例:例:int a=1,b=2;a+=a-=b+2;37本讲稿第三十七页,共四十七页2.6.6 自增、自减运算自增、自减运算 “+”增增1运算符运算符 “-”减减1运算符运算符 运算对象只能是整型或字符型变量运算对象只能是整型或字符型变量 运算符可在运算对象前面:运算符可在运算对象前面:+n;-m;运算符可在运算对象后面:运算符可在运算对象后面:n+;m-;38本讲稿第三十八页,共四十七页说明:说明:(1)当增)当
28、增1运算符或减运算符或减1 运算符位于运算对象之前时,表示在运算符位于运算对象之前时,表示在使用该运算对象之前使它的值先增使用该运算对象之前使它的值先增1或减或减1,然后再使用它,即使,然后再使用它,即使用的是增用的是增1或减或减1后的值。后的值。(先自增,再使用先自增,再使用)x=+n;n=n+1;x=n;(2)当增当增1运算符或减运算符或减1 运算符位于运算对象之后时,表示在运算符位于运算对象之后时,表示在使用该运算对象之后才使它的值先增使用该运算对象之后才使它的值先增1或减或减1,即使用的是增,即使用的是增1或或减减1前的值。(前的值。(先使用,再自增先使用,再自增)x=n+;x=n;n
29、=n+1;39本讲稿第三十九页,共四十七页#include void main()int a,b,c;b=5;c=5;a=+b+c-;printf(%d,%d,%dn,a,b,c);a=(b-)-c;printf(%d,%d,%dn,a,b,c);a=(-b+)+c;printf(%d,%d,%dn,a,b,c);(3)单目运算都是)单目运算都是“右结合右结合”的。的。例:例:m=-n+;40本讲稿第四十页,共四十七页2.6.7 强类型转换符强类型转换符一般形式为:一般形式为:(类型名类型名)表达式表达式 或或:(类型名类型名)(表达式表达式)但:但:类型名类型名 (表达式表达式)例:例:(i
30、nt)(x+y)说明:强类型转换并不改变变量本身的值。说明:强类型转换并不改变变量本身的值。例:例:e2_7.c41本讲稿第四十一页,共四十七页2.6.8 位运算位运算&按位与运算按位与运算|按位或运算按位或运算按位异或运算按位异或运算按位右移运算按位右移运算按位求反按位求反对字节或字内的二进制位进行运算。经常用于二进制位的测试、对字节或字内的二进制位进行运算。经常用于二进制位的测试、抽取、设置或移位等操作抽取、设置或移位等操作42本讲稿第四十二页,共四十七页说明:说明:(1)按位按位“与与”:常用于某二进制位:常用于某二进制位“清零清零”(2)按位按位“或或”:常用于某二进制位:常用于某二进
31、制位“置置1”(3)按位按位“左移左移”:每左移:每左移1位相当于乘以位相当于乘以2,左移,左移n位相当于乘位相当于乘2n(4)按位)按位“右移右移”:每右移:每右移1位相当于除以位相当于除以2,右移,右移n位相当于位相当于乘乘2n(5)注意逻辑运算与位运算的区别)注意逻辑运算与位运算的区别 例:例:int x=12,y=8;!x,x|y,x&y x,x|y,x&y43本讲稿第四十三页,共四十七页一般形式:一般形式:表达式表达式1 1,表达式,表达式2 2,表达式表达式n n 计算过程:先计算表达式计算过程:先计算表达式1 1,再计算表达式,再计算表达式2 2,最后计算表达式,最后计算表达式n
32、 n,逗号表达式的值为最右边表达式逗号表达式的值为最右边表达式n n的值。的值。例:例:int a;int a;a=2,a+=1,a+2 a=2,a+=1,a+2说明:说明:(1)(1)优先级:最低优先级:最低 例:例:x=3+4,5+7,10*4 x=(3+4,5+7,10*4)(2)(2)结合性结合性:自左至右自左至右2.6.9 逗号运算符逗号运算符44本讲稿第四十四页,共四十七页 整型、单精度、双精度及字符型数据可以进行混合运算。整型、单精度、双精度及字符型数据可以进行混合运算。当表达式中的数据类型不一致时,首先转换为同一类型,然当表达式中的数据类型不一致时,首先转换为同一类型,然后再进
33、行运算。后再进行运算。C C语言有两种方法实现类型转换:一是语言有两种方法实现类型转换:一是自动类自动类型转换型转换,另一是,另一是强制类型转换强制类型转换。2.7 类型转换类型转换(低低)int unsigned long double(高)(高)char或或short float 1.自动类型转换自动类型转换 C编译系统自动完成。编译系统自动完成。转换原则:转换原则:字节数少的数据类型转换成字节数多的数据类字节数少的数据类型转换成字节数多的数据类型。型。45本讲稿第四十五页,共四十七页例:例:A+B=65+66=131 int a;unsigned b;a+b int x;1.0/x 1.0/3+1.0/3+1.0/346本讲稿第四十六页,共四十七页2.2.赋值转换赋值转换 (1)(1)右侧表达式自动转换为与左侧变量类型相一致的类右侧表达式自动转换为与左侧变量类型相一致的类型。型。(2)(2)字节数多的数据类型赋值转换成字节数少的数据类型,字节数多的数据类型赋值转换成字节数少的数据类型,将会可能造成信息丢失、溢出等错误。将会可能造成信息丢失、溢出等错误。例:例:int n;int n;char c;char c;double x;double x;c=n;c=n;n=x;n=x;47本讲稿第四十七页,共四十七页
限制150内