收藏 分享(赏)

第3章 数据类型和表达式.ppt

上传人:jmydc 文档编号:4868667 上传时间:2019-01-18 格式:PPT 页数:33 大小:242.50KB
下载 相关 举报
第3章 数据类型和表达式.ppt_第1页
第1页 / 共33页
第3章 数据类型和表达式.ppt_第2页
第2页 / 共33页
第3章 数据类型和表达式.ppt_第3页
第3页 / 共33页
第3章 数据类型和表达式.ppt_第4页
第4页 / 共33页
第3章 数据类型和表达式.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、第3章 数据类型和表达式,程序就是对数据的处理,3.1 C语言的基本数据类型,数据类型,构造类型,指针类型,空类型 void,数组类型,结构体类型 struct,共用体类型 union,基本类型,字符类型 char,数值类型,整型类型 int及其它,实型类型 float,double及其它,C语言的数据类型有,枚举类型,关于基本数据类型 1.数据类型确定了允许对其进行的操作。 2.不同类型数据在内存中占不同的存储空间,且采取不同的存储形式。 3.不同类型数据对应不同的取值范围。,基本类型,字符型:char,实型:float,double,long double,整型:int,short,lon

2、g,unsigned,unsigned short,unsigned long,3.1.1 常量、变量的表示方法,按照数据在程序中的取值:值保持不变-常量,值随程序运行变化-变量 1、常量 在程序运行中,其值保持不变。,直接常量(字面常量):,100,125,-100 3.14 , 0.125 a, b,符号常量: #define PI 3.14159,用指定的标识符表示某个常量,#define 预处理命令宏定义命令:把标识符定义为其后内容的替换,例:常量与符号常量 #include #define PI 3.14159 void main() printf( “圆的半径为%d “ , 3 )

3、;printf( “圆的周长为%f “ , PI*2*3 );printf( “圆的面积为%f “ , PI*3*3 );,思考:用符号常量的好处?,圆的半径为3 圆的周长为18.849540 圆的面积为28.274310,2、变量 在程序运行中,值可以变化 必须先定义(声明),再使用 定义变量要指出类型和变量名 变量定义放于函数开头,可执行语句之前,变量定义会在内存分配相应存储空间 变量名:变量在内存中的位置 类型:变量在内存中占据存储单元大小,int a,b;,类型 变量名表,256,3,变量命名:合法的标识符(字母和下划线开头,字母、下划线、数字组成) 不能用保留字 区分大小写 变量名应

4、有意义,变量的使用:赋值、引用。 方式:通过变量名来存、取变量。,256,3,int a=3; a=256; int b; b = a;,#include #define PI 3.14159 void main() int r=2;float g,a;g=2*PI*r;a=PI*r*r;printf(“半径%d的圆,其周长为%f,其面积为%f“,r,g,a); ,10进制:10,-23,89。 8进制: 017-(17)8,相当于10进制数的15; -011相当于10进制数9; 019是错误的整数常量,因为9不能作为8进制数的数位值。 16进制: 0x18实际上是(18)16,相当于10进制

5、数的24。,3.2 整型数据,3.2.1 整型常量 C语言中提供了3种表示整数常量的方法: 10进制整数 8进制整数:以数字0开头的数是8进制数。 16进制整数: 以0x或0X开头的数是16进制数。 有了上面3种整数表示方法,我们可以这样定义整数的符号常量: #define NUM1 30 #define NUM2 026 #define NUM3 0x1a,常量NUM1的值是30, 常量NUM2的值是22, 常量NUM3的值是26,3.2.2 整型变量 定义格式:类型标识符 变量名列表;分号结尾 例如:int a;,如果想一次定义多个整型变量,可以这样:int a , b , c; 变量间用

6、逗号分隔上面一行定义等价于下面3行,但形式却简洁一些: int a; int b; int c;,3.2.3 整型数据的分类和存储 1、分类 整型变量的基本类型符是int。 在int前面增加两类修饰符: signed和unsigned(控制整型变量是否有符号) short和long(控制整型变量的值域范围) 这样就形成了6类整型变量:,类型说明符 长度 数的范围 基本型 int 2字节 -3276832767 短整型 short int 2字节 -215215-1 长整型 long int 4字节 -231231-1 无符号整型 unsigned int 2字节 065535 无符号短整型 u

7、nsigned short int 2字节 065535 无符号长整型 unsigned long int 4字节 0(232-1),2、存储,void main() int i=11; short j=11; long k=11; unsigned int ui=11; unsigned short uj=11; unsigned long uk=11; int m=-11; ,整数在内存用二进制补码表示(有符号数) 计算机中规定对于有符号数,最高位充当符号位(0为正,1为负),其他位用来存放数据。 一个整数的绝对值的2进制表示称为这个数的原码。 一个正整数和零的补码就是原码本身。 但一个负

8、数的补码是它的原码取反加1的结果。,void main() int x,y;x=32767;y=x+1;printf( “%d, %d”, x,y); ,3、sizeof运算符测定数据类型所占存储空间(字节数)sizeof (类型标识符)sizeof (变量名) 4、整型数据的溢出,-32768,3.3 实型数据,3.3.1 实型常量 两种表示方式 10进制小数形式: 数字和小数点组成。 指数形式:小数部分,e,指数部分组成3.3.2 实型变量 变量定义格式与书写规则同整数float a,b;,如:1.2、33.24、0.0 若整数部分为0可以省去,只保留小数点和小数部分,但绝对不能没有小数点

9、。 如: .24、 .2等等。 如:123.4e2 注意,e或E前面必须有数字,后面必须是整数! 错误形式:e3、.e5、12e3.5,3.3.3 实型数据的分类和存储 1、分类 单精度float 4字节 双精度double 8字节 长双精度long double 16字节,float f=2.14; double x, y; long double a;,2、存储 但实数在内存是按照指数形式存放的。,1位 决定有效数字 决定取值范围,3.4 字符型数据,3.4.1 字符常量 ASCII字符集 表示方法: 可显示字符:通常就用单引号引起来表示 不可显示字符:转义序列表示法:+指定字符 也可以用

10、一般转义序列表示所有字符:000 000表示1-3个八进制数 或x00 00表示1-多个十六进制数,a /字符a /字符 4 /字符4 /空格字符n /换行符 r /回车符07 /响铃符 62 /2 x61 /a,3.4.2 字符变量类型:charchar a=c;3.4.3 类型与存储 1、类型与长度char 1字节2、内存表示内存放字符的ASCII码故:字符常量、变量可以其ASCII码值参与运算,void main() char a=A;printf(“%c”,a); ,3.4.4 字符串常量及内存表示 字符串没有对应的类型,其实际是字符数组 表示方法: 用双引号括起的字符序列(0个或多个

11、字符) 。 其中不可显示字符由相应转义序列表示 组成:除显式给出的字符外,还包括字符结尾处标识字符串结束的符号0,字符串“abc”在内存中的存放形式,字符串常量 a /占两个字节, 存放a和 0, 值为0x6100,字符型常量 a /占一个字节, 存放a, 值为0x61, ,3.5 运算符和表达式,表达式 表达式由运算符、运算对象(也称操作数)、括号组成。 执行表达式的运算,所得结果值便是表达式的值。 表达式定义 一个常量或变量是最简单的表达式,其值是常量或变量的值。 表达式的值可以用来继续参与运算,以形成更复杂的表达式。 包含在括号中的表达式仍是一个表达式,其类型与值与未加括号一致。 运算符

12、 一元运算符、二元运算符、三元运算符 运算符具有优先级和结合性(决定了表达式运算的优先关系) 优先级:指不同运算符在运算中的优先关系 结合性:决定同优先级的运算符对操作数的运算次序,3.5.1 算术运算符和算术表达式,1、算术运算符 C语言的算术运算符 单目:-,+ 双目:+,-,*,/,% 操作数: 注意: 两个整数相除的结果是整数。如果商含小数部分将被截掉。 (%)求余数,不能用于实型。 浮点数运算会产生精度问题(受底层数据类型的固有精度影响,产生浮点舍入) 字符类型数据可以参与算术运算,以它的ASCII码,2、算术表达式 由常量、变量、函数和算术运算符组合起来的式子 表达式的值,算术运算

13、符的优先级与数学中相同,3.5.2 关系、逻辑运算符与条件运算符,1、关系运算符 (1)关系运算符 对两个操作数比较 =, = , != 结果:逻辑值(真、假)(C语言没有逻辑值数据类型,用0表示假,1(非0)表示真) (2)关系表达式 表达式 关系运算符 表达式,#include void main() int x; int y; scanf(“%d“, ,=,!=的优先级低于其余四个 关系运算的优先级高于赋值,低于算术,2、逻辑运算符 (1)逻辑运算符对真假值进行逻辑操作结果为真、假! & | (2)逻辑表达式表达式 逻辑运算符 表达式,逻辑运算符 & | 真 真 真 真 真 假 假 真

14、假 假 假 假,逻辑表达式求值(&,|) C语言规定,只对能够确定整个表达式值的最少书目的子表达式计算, 如果计算出来的某个表达式值后就可以确定整个表达式的值,后面的子表达式就不再计算。,逻辑运算符的优先级低于关系,高于赋值,3、条件运算符 (1)条件运算符进行条件运算?: (2)条件表达式表达式1?表达式2:表达式3表达式1为真假值(关系、逻辑表达式)表达式2、3为同类型值运算符结果:若表达式1为真,结果 为表达式1的值,若表达式1为假,结果为表达式2的值,void main() int a,b,max; a=3; b=6; max=ab?a:b; ,条件运算符优先级高于赋值,低于其他,3.

15、5.3 自增、自减运算符 单目运算符:+、- 作用:变量加1、减1操作int i=5;i=i+1; i+;i=i-1; i-; 只能用于变量,不能用于表达式、常量 两种应用形式 前缀 +i : i先加1,在使用i 后缀 i+ :先使用i,i再加1 若作为单独的表达式,前缀后缀形式没有区别,但若作为其他表达式(语句)的一部分则注意区别。 i+;/* i=i+1 */ +i; /* i=i+1 */,void main() int a,b,i; i=5; a=i+; b=+i; ,单目运算符优先级高于双目,3.5.4 位运算符 针对二进制位的运算 , , &, , | 操作数:整型、字符型,补充:

16、赋值运算符 1、赋值运算符 = 复合赋值运算符:+=,-=,*=,/=, %=(位运算符) 2、赋值表达式 变量=表达式(将表达式的值赋值给变量) 变量+=表达式 变量=变量+(表达式) 结果值:变量的值,赋值运算符的优先级基本上最低(仅高于逗号运算符),3.5.5 运算符符的优先级与结合性 运算符具有优先级和结合性(决定了表达式运算的优先关系) 优先级:指不同运算符在运算中的优先关系 结合性:决定同优先级的运算符对操作数的运算次序 见表3-4(p32),3.5.6 不同数据类型的转换 运算符的两个操作数一般类型应相同 若不同?转换为相同类型 1、自动转换 参与运算的不同类型操作数应转换为同一

17、类型 准换顺序:按长度增加方向进行 小于int的类型先转换为int在参与运算,float先转换为double类型 赋值号右边类型转换为左边类型 2、强制类型转换 (类型标识符)表达式,int i,j; float f; double d; long e; j=10+a+i*f-d/e,int i=5,j=3; double k; k=5/3; k=(double)5/3,补充:简单的输入输出,输出:printf函数 形式:printf(格式字符串,输出项表) 格式化字符串中包含两种内容 普通字符:直接输出 格式指示符:不直接输出(在其位置上显示参数值) 以%开头,如%d,%f,直接输出字符串

18、printf ( “hello”); printf(“hellonworld!”);输出整型值 int i=5; printf ( “%d”, i); 格式指示符 类型 输出形式 %d,%i: (int) 有符号10进制表示 %u: (int) 无符号10进制表示 %x: (int) 无符号16进制表示 %o: (int) 无符号8进制表示,加h表示 short 加l 表示 long,输出实型值 double d=2.222; printf(“%f”,d); 格式指示符 %f:10进制小数(小数点后默认6位) %e:指数形式小数(小数点后默认6位)输出单个字符 char c=A; printf

19、(“%c”,c);在字符串中嵌入输出项的值 void main() int i=2; double d; d=3.14*2*2; printf(“半径为%d的圆,面积为%fn”, i, d ); ,float ,double类型都可以用%f或%e输出,输入:scanf函数 形式:scanf(格式字符串,输入项地址表),输入整数 格式标识,类型, 输入形式 %d: (int) 有符号十进制形式 %i: (int) 有符号整数(输入数值可带前缀) %u:(unsigned int)无符号十进制形式 %o: (int) 八进制形式(输入数值可不带前缀0) %x: (int) 十六进制形式(输入数值可不带前缀0x) int a; scanf(“%d”,加前缀h为short类型, 加前缀l为long类型,输入字符 格式标识:%c char c; scanf(“%c”, 读入数据时忽略空格,制表符,换行符,但读字符时除外。,

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

当前位置:首页 > 实用文档 > 统计图表

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


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

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

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