收藏 分享(赏)

第二章 数据类型、运算符和表达式.ppt

上传人:gnk289057 文档编号:9241146 上传时间:2019-07-30 格式:PPT 页数:46 大小:234KB
下载 相关 举报
第二章 数据类型、运算符和表达式.ppt_第1页
第1页 / 共46页
第二章 数据类型、运算符和表达式.ppt_第2页
第2页 / 共46页
第二章 数据类型、运算符和表达式.ppt_第3页
第3页 / 共46页
第二章 数据类型、运算符和表达式.ppt_第4页
第4页 / 共46页
第二章 数据类型、运算符和表达式.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、第二章 数据类型、运算符和表达式,2.1 C的数据类型 2.2 常量和变量 2.3 整型数据 2.4 实型数据 2.5 字符型数据 2.6 变量赋初值 2.7 不同类型数据间的转换 2.8 算术运算与算术表达式 2.9 赋值运算符与赋值表达式 2.10 逗号运算符与逗号表达式,2.1 C的数据类型,一个程序应包括对数据的描述和对数据处理的 描述。 1、对数据的描述指定数据的类型和数据的组织形式即数据结构。2、对数据处理的描述即操作步骤也就是算法算法是为解决一个问题而采取的方法和步骤,是程序的灵魂。为此计算机科学家沃思提出一个公式:程序=算法+数据结构,实际上,一个程序除了算法和数据结构外,还

2、必须使用一种计算机语言并采用结构化方法来表 示,可以这样表示:程序=算法+数据结构+程序设计方法+语言工具和环境C语言提供的数据结构是以数据类型形式出现的, 数据类型如下: 1、基本类型整形、字符型、实型(浮点型)、枚举类型 2、构造类型数组类型、结构体类型、共用体类型,3、指针类型 4、空类型C语言中的数据,有常量和变量之分,它们分别 属于上述类型。,2.2 常量和变量,一、常量在程序运行过程中,其值不能被改变的量称为常量。常量可通过字面形式来判别。符号常量用一个标识符代表一个常量,它的值在作用域内不能改变,也不能再被赋值。习惯上,符号常量名用大写。,例:求圆的面积#define PI 3.

3、14159main( )float r, s;s=PI*r*r;printf( “area=%d”,s);,二、变量在程序运行过程中,其值可以被改变的量称为变量。1、变量的两个要素(1)变量名 每一个变量都必须有一个名字,变量命名遵循标识符命名规则。(2)变量值在程序运行过程中,变量值存储在内存中,在程序中,通过变量名来引用变量的值。,2、标识符命名规则用来标识变量名、符号常量名、函数名、数组名、文件名的有效字符序列称为标识符。(1)有效字符只能由字母、数字、下划线组成,且以字母 或下划线开头。(2)有效长度随系统而异,但至少前8个字符有效,如果超长,则超长部份被舍弃。在TC V2.0中,变量

4、名(标识符)的有效长度为32个字符。,例如,由于student_name和student_number的前 个字符 相同,有的系统认为这两个变量,是一回事 而不加区别。(3)C语言的关健字不能用作变量名注意:(1)大写字母和小写字母被认为是两个不同的字符,习惯上,变量名和函数名的英文字母用小写,可以增加可读性。(2)在选择变量名和其它标识符时,应做到“见名知意”。3、变量的定义与初始化,在C语言中,要求所用到的变量必须先定义,后使用,且称在定义变量时赋初值的操作称为变量初始化。每个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元。(1)就是定义的一般格式数据类型 变量名1,变量名2;

5、例如,float radius, length, area;,(2)变量初始化的一般格式数据类型 变量名=初值, 变量名2=初值2;例如,float radius=2.5, length, area;,2.3 整型数据,一、整型常数1、三种表示方式 (1)十进制 16,20 (2)八进制(以数字0开头) 012 (3)十六进制(以数字0加小写字母 x开头) 0x362、分类 (1)值在-32768+32767间则是int型,可赋给int 或long int 型。,(2)超过上述范围,而在-2147483648 +2147483647间,则认为是long int型 (3)如果计算机系统的C版本(

6、Turbo C)确定shortint与int 型在内存中所占长度相同,则short int与int 的表示范围相同。 (4)一个整常量后有字母u,则认为是unsigned型 (5)一个整常量后有字母L,则认为是long int型,二、整型变量1、整型数据在内存中的存放形式(1)数据在内存中是以二进制形式存放的(2)数值是以补码来表示的2、整型变量的分类(1)有符号基本整型 signed int(2)无符号基本整型 unsigned int(3)有符号短整型 signed short int(4)无符号短整型 unsigned short int,(5)有符号长整型 signed long in

7、t(6)无符号长整型 unsigned long int 一个无符号整型变量中,可以存放的正整数的范围比一般整型变量中正数的范围扩大1倍。C标准没有规定以上各数据类型所占内存字节数,只要求long型不短于int型,short型不长于int型,具体如何实现由各计算机系统自行决定。,3、整型变量的定义对变量的定义,一般放在一个函数的开头部 份的声明部份,也可以放在函数中某一分程序内。不同种类的整形数据可以进行算术运算。4、整型数据的溢出溢出:结果超出数的最大表示范围,2.4 实型数据,一、实型常量实数又称为浮点数,有两种表示方式:(1)十进制小数形式由数字和小数点组成,注意必须要有小数点,小数点前

8、后的0可以省略。如0.123, .123, 123.0, 0.0, 123.(2)指数形式注意:e(E)之前必须有数字,且e(E)后的指数必须为整数。如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5,规范的指数形式:在e(E)之前的小数部份中,小数点左边有且仅有一位非零数字。二、实型变量 1、在内存中的存放形式(一般占4个字节),在4个字节中,各部份各用几位来表示,由各C编译系统自定。小数部份占的位数愈多,数的有效数字愈多,精度愈高。指数部份占的位数愈多,则能表示的数值范围愈大。,2、实型变量的分类(1)单精度型(float)一般占4个字节,提供67位有效数字 (

9、2)双精度型(double)一般占8个字节,提供1516位有效数字 (3)长双精度型(long double)一般占10个字节,提供1819位有效数字,3、实型数据的舍入误差舍入误差:用有限的存储单元存储变量,在有效位以外的数字将被舍弃,由些产生的误差。注意:应该避免将一个很大数和一个很小数直接相加或相减,否则会“丢失”小的数。,三、实型常量的类型1、许多C编译系统将实型变量作为双精度来处理,这样保证了计算结果的精确性,但是却降低了运算速度。可在数加f(F),则系统按单精度处理。2、一个实型常量可以赋给 float, double, long double型,系统根据变量类型截取实型常量中相应

10、的有效数字。,2.5 字符型数据,一、字符常量 1、用单引号括起来的单个普通字符或转义字符(区 分大小写) 。如 a A ? n 1012、转义字符:反斜线后面跟一个字符或一个代码值表示注意:如果反斜杠或单引号本身作为字符常量,必须使用转义字符:,二、字符变量字符变量的类型关健字为char,一般占用一个字节存储单元。,例 转义字符举例(ch2_001.c,ch2_004.c) main() printf(“101 x42 Cn“);printf(“I say:“How are you?“n“);printf(“C Programn“);printf(“Turbo C“); ,运行结果:(屏幕显

11、示) A B C Isay:”How are you?” C Program Turbo C,1、变量值的存储将一个字符常量存储到一个字符变量中,实际上存储的是该字符的ASCII码。2、特性字符数据在内存中存储的是其ASCII码(无符号整数),其形式与整数存储形式相同,所以C语言允许字符型数据与整型数据之间通用。(1)一个字符型数据,既可以以字符形式输出,也可用整数形式输出。,例: 字符变量的字符形式输出和整数形式输出 /*程序功能:用字符形式和整数形式输出字符变 量*/ main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch

12、1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); 程序运行结果: ch1=a,ch2=b ch1=97,ch2=98,(2)允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算。例: 字符数据的算术运算。 /*程序功能:字符数据的算术运算*/ main() char ch1,ch2; ch1=a; ch2=B;/*字母的大小写转换*/ printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32); /*用字符形式输出一个大于256的数值*/ printf(“ch1+200=%dn“, ch1+200); printf(“ch1

13、+200=%cn“, ch1+200); printf(“ch1+256=%dn“, ch1+256); printf(“ch1+256=%cn“, ch1+256); ,程序运行结果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a三、字符串常量 1、字符串常量的概念和字符串长度 (1)字符串常量是用一对双引号括起来的若干字符序列。,(2)字符串中字符的个数称为字符串长度,长度为0的字符串(即一个字符都没有)称为空串,表示为“ ”,如果反斜杠和双引号作为字符串中的有效字符必须使用转义字符。2、字符串的存储C语言规定:在存储字符串常量时,由

14、系统在字符串的未尾自动加一个0作为字符串的结束标志。,注意:在源程序中书写字符串常量时,不必加结束字符0,否则会画蛇添足。 比较“A”与 a的区别:(1)定界符不同字符常量作用单引号,字符串常量作用双引号。(2)长度不同字符常量长度固定为1,而字符串的长度可为0,也可以是某个整数。,(3)存储要求不同字符串常量存储的是字符的ASCII码,而字符串常量除了要存有效字符外,还要存储结束标志0。,2.6 变量赋初值,C语言允许在定义变量时对变量初始化,初始化 不是在编译阶段完成的,而是在程序运行时,执行 本函数时,赋予初值的,相当于一个赋值语句。只 有静态存储变量和外部变量的初始化是在编译阶段 完成

15、的。int a=4; 相当于 int a; a=4;int a,b,c=5; int a=4,b=4,c=4; int a=b=c=4; ,2.7不同类型数据间的转换,一、隐式转换什么情况下发生运算转换-不同类型数据混合运算时赋值转换-把一个值赋给与其类型不同的变量时输出转换-输出时转换成指定的输出格式函数调用转换-实参与形参类型不一致时转换运算转换规则: 不同类型数据运算时先自动转换成同一类型,二、显式转换(强制转换) 一般形式:(类型名)(表达式) 例 (int)(x+y)(int)x+y(double)(3/2)(int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,例

16、main() float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3,精度损失问题,2.8 算术运算与算术表达式,在C语言中,除控制语句和输入输出函数外,其它所有基本操作都作为运算符处理。一、五种基本的算术运算符+,-(减/取负),*,/,%(求余)1、“-”可为单目运算符时,右结合性2、关于除法运算C语言规定:两个整数相除,其商为整数,小数部份被舍弃。,例 5/2 = 2 -5/2.0 = -2.5,2、求余运算要求两侧的操作数都为整型数据,否则出错。二、表达式和算术表达式1、表达式的概念用运算符和括号将

17、运算对象(常量、变量和函数)连接起来,符合C语言的语法规则的式子称为表达式。单个常量、变量或函数可以看作是表达式的特例,称为简单表达式,其它表达式称为复杂表达式。,例 5%2 = 1 -5%2 = -11%10 = 15%1 = 05.5%2 (),2、算术表达式表达式中的运算符都是算术运算符三、运算符的优先级与结合性1、C语言中规定了运算符的优先级和结合性(1)结合性是指,当一个操作数两侧的运算符具有相同优先级时,该操作数是先与左边的运算符结合还是先与右边的结合。 (2)自左至右的结合方向称为左结合性,反之称为右结合性。,(3)结合性是语言的独有概念。除单目运算符、赋值运算符和条件运算符是右

18、结合性外,其它运算符都是左结合性。2、表达式求值(1)按运算符的优先级高低次序执行。例如,先乘除后加减。(2)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按语言规定的结合方向(结合性)进行。,例如,算术运算符的结合方向是“自左至右”,即:在执行“a b + c”时,变量b先与减号结合,执行“a - b”;然后再执行加c的运算。,五、自增、自减运算符1、作用 自增运算使单个变量的值增,自减运算使单个变量的值减。2、使用方法(1)前置运算运算符放在变量之前:变量、变量 先使变量的值增(或减),然后再以变化 后的值参与其它运算,即先增减、后运算。,(2)后置运算运算符放在变量之后:变

19、量、变量变量先参与其它运算,然后再使变量的值增(或减),即先运算、后增减。 3、用途常用于循环语句中,使循环控制变量增/减1;以及指针变量中,使指针向上/下一个地址。 注意:1、+,- 是单目运算符,且只能用于变量2、+,- 的结合性是“自右至左”3、在表达式中,连续使用同一变量进行自增或自减运算时,很容易出错,最好避免使用这些方法。,例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=

20、20,a=4,/c=15,a=4,例:自增、自减运算符的用法与运算规则示例。 /*程序功能:自增、自减运算符的用法与运算规则示例*/ main() int x=6, y;printf(“x=%dn“,x); /*输出x的初值*/y = +x; /*前置运算*/printf(“y=+x: x=%d,y=%dn“,x,y); y = x-; /*后置运算*/printf(“y=x-: x=%d,y=%dn“,x,y); 程序运行结果: x=6 y=+x: x=7,y=7 y=x-: x=6,y=7,2.9 赋值运算符与赋值表达式,一、赋值运算一般形式: 变量=赋值表达式例如,x = 5 y = (

21、float)5 / 2若表达式值的类型与被赋值变量的类型不一 致,但都是数值型或字符型时,系统自动地将表达 式的值转换成被赋值变量的数据类型,然后再赋值 给变量。,二、复合赋值运算, 一般形式:变量 双目运算符 = 表达式 复合赋值运算符等价于:变量=变量 双目运算符号 (表达式) 说明:当表达式为简单表达式时圆括号右以省略,否则出错。,例如,x += 3 /* 等价于x=x+3 */y *= x + 6 /* 等价于y=y*(x+6), 而不是y=y*x+6 */,三、赋值表达式,由赋值运算符或复合赋值运算符将一个变量和 一个表达式连接起来的表达式称为赋值表达式。, C语言规定的10种复合赋

22、值运算符如下:+=,-=,*=,/=,%=; /*复合算术运算符(5个)*/&=,=,|=,=;/*复合位运算符(5个)*/,1、一般格式变量 (复合)赋值运算符 表达式,2、赋值表达式的值任何一个表达式都有一个值。被赋值的变量 的值就是赋值表达式的值。 例如,“a = 5”这个赋值表达式,变量a的值 “”就是它的值。3、赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型4、结合性:从右到左四、赋值语句由赋值表达式加上一个分号构成。,例 int i; i=2.56; /结果i=2;,例: a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2),/ b=

23、5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,例: a=12; a+=a-=a*a,/a=-264 等价于a=a+(a=a-(a*a),例: int a=2; a%=4-1; a+=a*=a-=a*=3;,/a=0 等价于a=a+(a=a*(a=a-(a=a*3),2.10 逗号运算符与逗号表达式,用逗号运算符将两个表达式连接起来的式了称为 逗号表达式,逗号运算符又称顺序求值运算符。,一、一般形式表达式1,表达式2,表达式n,二、求解过程自左至右依次计算各表达式的值,“表达式n”的值为整个逗号表达式的值。,例如,

24、逗号表达式“a = 3 * 5, a * 4”的值=60:先求解a = 3 * 5,得a=15;再求a * 4 = 60,所以逗号表达式的值=60。又例如,逗号表达式“(a = 3 * 5, a * 4), a + 5”的值=20:先求解a = 3 * 5,得a=15;再求a * 4=60;最后求解a + 5=20,所以逗号表达式的值=20。,注意:并不是任何地方出现的逗号都是逗号运算符,很多情况下,逗号仅作分隔符。,例 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);,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报