第2讲数据类型、运算符与表达式.ppt
《第2讲数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《第2讲数据类型、运算符与表达式.ppt(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 二 讲 数据类型、运算符与表达式2.1 数据类型 2.2 常量与变量 2.3 数据类型转换 2.4 运算符与表达式22.1 数据类型数据类型是按被定义变量的性质,表示形式,占据存储空间的多少,构造特点来划分的。在语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。3双精度浮点(double)数据类型基本类型构造类型指针类型(*)空类型(void)整型(int)字符型(char)浮点型单精度浮点(float)结构体类型(struct)数组类型()共用体类型(union)枚举类型(enum)42.2 常量与变量对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。
2、在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量。它们可与数据类型结合起来分类。例如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先定义后使用。整型量包括整型常量、整型变量。5 常量和符号常量 直接常量(字面常量):整型常量:12、0、-3;实型常量:4.6、-1.23;字符常量:a、b。符号常量:用标示符代表一个常量。在语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:#define 标识符 常量 6#define PRICE 3
3、0 main()int num,total;num=10;total=num*PRICE;printf(“total=%d”,total);7使用符号常量的好处是:u含义清楚;u能做到“一改全改”。8 变量 一个变量应该有一个名字,在内存中占据一定的存储单元。变量的类型决定了该存储空间的长度和其中存放数据的编码方式及存储格式。变量的类型也决定了该存储空间中存放数据的数据形式和取值范围。变量定义必须放在变量使用之前。一般放在函数体的开头部分。920NUM变量名称变量名称变量的值变量的值存储单元存储单元12FF7012FF6C12FF7012FF74内存内存10整型数据 整型常量整型常量整型常量就
4、是整常数。在语言中,使用的整常数有八进制、十六进制和十进制三种。十进制整常数十进制整常数:十进制整常数没有前缀。其数码为十进制整常数没有前缀。其数码为 09。以下各数是合法的十进制整常数:237、-568、65535、1627;以下各数不是合法的十进制整023(不能有前导 0)、23D(含有非十进制数码)。11八进制整常数八进制整常数:八进制整常数必须以八进制整常数必须以 0 开头,即以开头,即以 0 作为八进制数的作为八进制数的前缀。数码取值为前缀。数码取值为 07。八进制数通常是无符号数。以下各数是合法的八进制数:015(十进制为 13)、0101(十进制为 65)以下各数不是合法的八进制
5、数:256(无前缀 0)、03A2(包含了非八进制数码)、-0127(出现了负号)。12十六进制整常数十六进制整常数:十六进制整常数的前缀为十六进制整常数的前缀为 0X或或 0 x。其数码取值为。其数码取值为 0 9,AF 或或af。以下各数是合法的十六进制整常数:0X2A(十进制为 42)、0XA0(十进制为 160)、0XFFFF(十进制为 65535);以下各数不是合法的十六进制整常数:5A(无前缀 0X)、0X3H(含有非十六进制数码)。13在计算机中,数值是以补码补码表示的:正数的补码和原码相同;正数的补码和原码相同;负数的补码,将该数的绝对值的二进制形式按位负数的补码,将该数的绝对
6、值的二进制形式按位取反再加取反再加 1。14求-10 的补码:00000000 00000000 00000000 00001010 10 的原码:00000000 00000000 00000000 00001010 取反11111111 11111111 11111111 11110101 再加 1,得 10 的补码:11111111 11111111 11111111 1111011015整型变量 int 在在 C 语言中用于存储整数语言中用于存储整数int 32 位位 2147483648 2147483647,(-231231-1)如 4(十进制)0000 0000 0000 000
7、0 0000 0000 0000 0100 在在16位操作系统中,一般用字节表示一个位操作系统中,一般用字节表示一个int型变量,且型变量,且 long型(字节)型(字节)int型(字节)型(字节)short型(字节)。型(字节)。在在VC+6.0环境中,用环境中,用4字节表示一个字节表示一个int型变量,且型变量,且 long型(字节)型(字节)int型(型(4字节)字节)short型(字节)。型(字节)。16u声明:声明:int length;long int num;unsigned int age;u可按如下方式初始化:可按如下方式初始化:length=0;int width=100;
8、在同一语句中可以声明多个类型相同的变量:在同一语句中可以声明多个类型相同的变量:int a,b,c;17整型数据的溢出整型数据的溢出#includevoid main()int a,b;a=2147483647;b=a+1;printf(%dn%dn,a,b);18实型数据 实型常量实型常量实型也称为浮点型。实型常量也称为实数或者浮点数。实型也称为浮点型。实型常量也称为实数或者浮点数。在语言中,实数只采用十进制。在语言中,实数只采用十进制。它有二种形式:它有二种形式:十进制小数形式,指数形式十进制小数形式,指数形式。十进制数形式十进制数形式:由数码:由数码 0 9 和小数点组成。和小数点组成。
9、例如:例如:25.0、5.789、0.13、5.0、300.、-267.8230 均为合均为合法的实数。法的实数。注意,必须有小数点。注意,必须有小数点。19指数形式指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式:a E n(a 为十进制数,为十进制数,n 为十进制为十进制整数整数),其值为a*10n。如:2.1E5(等于2.1*105)3.7E-2(等于3.7*10-2)20以下不是合法的实数:以下不是合法的实数:345(无小数点)E7(阶码标志 E 之前无数字)-5(无阶码标志)53.-E3(负号位置不对)u小数点不能单独出现;ue或E的两
10、边必须有数,且其后面必须为整数;21实型变量 关键字关键字 字节数字节数 取值范围取值范围 精度精度(位位)float 4 3.410-38 3.41038 7double 8 1.710-308 1.710308 1622float 在在 C 语言中用于存储单精度浮点数语言中用于存储单精度浮点数float 32 位位 10-38 至至 10+38,7位有效数字位有效数字声明:声明:float price;初始化:初始化:float price=11.3;price=65.90;23double 在在 C 语言中用于存储双精度浮点数语言中用于存储双精度浮点数double 64 位,位,10-3
11、08 至至 10+308,16位有效数字位有效数字声明:声明:double pai;初始化:初始化:double pai=3.1415926589;pai=3.1415926589;24字符型数据 字符常量字符常量字符常量是用单引号括起来的一个字符用单引号括起来的由反斜杠()引导的转义字符。例如:a、b、=、+、?字符字符A A的的ASCIIASCII码为:码为:65D65D(十进制)(十进制)=41H=41H(十六进制)(十六进制)=101Q=101Q(八进制)(八进制)字符字符A A可以表示为可以表示为AA、x41x41、101101。25ASCII值值符号符号值值符号符号值值符号符号0空
12、字符空字符44,9132空格空格45-9233!46.933447/9435#48570995_36$58:9637%59;97122az38&6012541)63?12642*64127DEL(Delete键键)43+6590AZ26转义序列转义转义序列序列名称名称描述描述a 警告产生一则警告。b 退格将光标回退一格。f 换页将光标移到下一页的第一格。n 换行将光标移到下一行的第一格。r 回车将光标移到当前行的第一格。t 水平制表 将光标移到下一个水平制表位置。v 垂直制表将光标移到下一个垂直制表位置。单引号产生一个单引号。双引号产生一个双引号。?问号产生一个问号。反斜线产生一条反斜线。0
13、空产生一个空字符。ddd8进制数表示的进制数表示的ASCII码对应的字符码对应的字符 xhh16进制数表示的进制数表示的ASCII码对应的字符码对应的字符27占 8 位内存signed或unsignedSigned-128至+127unsigned0至255chargender;gender=m;chargender=m;字符变量28字符型可参与数学运算,也可看成一种一字节的整型变量。例:#includevoid main()char a,b;a=a;b=a+2;printf(%cn,b);cPress any key to continue29例:#includevoid main()cha
14、r a=A;int b;b=a+1;printf(%dn,b);66Press any key to continue30 字符串常量 字符串常量是由一对双引号双引号括起的字符序列。例如:CHINA ,“C program”,$12.5 等都是合法的字符串常量。31字符串常量和字符常量是不同的量。它们之间主要有以下区别:1)字符常量由单引号括起来,字符串常量由双引号括起来。2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在语言中没有相应的字符串变量。但是可以用一个字符数组来存放一个字符串常量。在数组一
15、章内予以介绍。4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加 1。增加的一个字节中存放字符0(ASCII 码为 0)。这是字符串结束的标志。32例如:字符串“C program”在内存中所占的字为:字符常量a和字符串常量“a”虽然都只有一个字符,但在内存中的情况是不同的。a在内存中占一个字节,可表示为:a在内存中占二个字节,可表示为:Cprogram0aa0332.3 数据类型转换u自动类型转换自动类型转换u原则:把表示范围小的类型的值转换到表示范围大的原则:把表示范围小的类型的值转换到表示范围大的类型的值类型的值uint float doubleu强制类型转换
16、强制类型转换u语法:语法:(类型名类型名)变量或数值变量或数值 u例如:例如:int a=5,b=3;float shang=(float)a/b;34例:#includevoid main()int a=5,c;double d;c=a/3;d=a/3;printf(c=%dn,c);printf(d=%fn,d);c=1d=1.000000Press any key to continue35例:#includevoid main()int a=5,c;double d;c=a/3;d=a/3.0;printf(c=%dn,c);printf(d=%fn,d);c=1d=1.666667P
17、ress any key to continue36例:#includevoid main()int a=5,c;double d;c=a/3;d=(double)a/3;printf(c=%dn,c);printf(d=%fn,d);c=1d=1.666667Press any key to continue372.4 运算符与表达式运算符运算符:就是表示某种运算功能的符号。运算符的主要类型有:运算符的主要类型有:u 算术运算符算术运算符u 赋值运算符赋值运算符u 关系运算符关系运算符u 逻辑运算符逻辑运算符表达式表达式:由常量、变量、函数和运算符组合起来的式子。如:a+b、a=c*d38算
18、术运算符算术一元一元二元二元操作数操作数运算符39+(加):2+3-(减):3-1*(乘):3*2/(除):5/3、5.0/3(注意,此二种形式,结果不同)优先级:优先级:()*、/、%+、-结合性:从左至右;结合性:从左至右;如:如:2+3-540%(%(取余取余)(注意:取余运算的操作数只能是整数注意:取余运算的操作数只能是整数,结果的符号与被除数相同结果的符号与被除数相同)5%25%2的值为的值为1 1;-5%2-5%2的值为的值为-1-1;5%(-2)5%(-2)的值为的值为1 1;-5%(-2)-5%(-2)的值为的值为-1-1;41自增、自减运算符:自增、自减运算符:自增 1 运算
19、符记为“+”,其功能是使变量的值自增 1。自减 1 运算符记为“-”,其功能是使变量值自减 1。自增 1,自减 1 运算符均为单目运算,都具有右结合右结合性。性。可有以下几种形式:+i i 自增 1 后再参与其它运算。-i i 自减1 后再参与其它运算。i+i 参与运算后,i的值再自增 1。i-i 参与运算后,i 的值再自减 1。42a=5;等价于 a=5;b=a+;b=a;b=5a+;a=6a=5;等价于 a=5;b=+a;a+;a=6b=a;b=643#includevoid main()int i=8;int a;a=+i;printf(%dn,a);a=i+;printf(%dn,a)
20、;a=-i;printf(%dn,a);a=i-;printf(%dn,a);9999Press any key to continue44例#includevoid main()int i=5,j=5,p,q;p=(i+)+(i+)+(i+);q=(+j)+(+j)+(+j);printf(p=%dnq=%dni=%dnj=%dn,p,q,i,j);p=15q=24i=8j=8Press any key to continue45C 编译器的编译器的“最大贪婪最大贪婪”规则规则 当C 语言编译器对源程序进行词法分析时,如果运算符的下一个符号还是运算符,并且能和前一个运算符构成一个新的合法运算
21、符时,编译器的词法分析器必须将其解析为两个运算符符号构成的新的运算符(C 语言中没有3 个符号构成的运算符)。例如:x=z+y;是按照x=z+(+y);来计算;还是按照x=(z+)+y;来计算呢?根据C 编译器的“最大贪婪”规则,就必须按照x=(z+)+y;来计算,而不是按照x=z+(+y);来计算。46例:#include void main()int a=10;int b=5,c;c=b+a;printf(%d%d%d,a,b,c);10,6,1547例:#include void main()int i=1,j;j=i+i+i+;printf(i=%d,j=%dn,i,j);j=(i+)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据类型 运算 表达式
限制150内