第3章数据类型、运算符、表达式.ppt
《第3章数据类型、运算符、表达式.ppt》由会员分享,可在线阅读,更多相关《第3章数据类型、运算符、表达式.ppt(97页珍藏版)》请在三一文库上搜索。
1、第三章 数据类型、运算符、表达式,数据类型分类,数据类型,基本类型,整型,实型,字符型,枚举类型,双精度,单精度,构造类型,指针类型,空类型,数组类型,共同体类型,结构体类型,常量,常量: 在程序运行过程中,其值不能被改变的量。 习惯上,符号常量名用大写,变量用小写,以示区别,符号常量: 代表常量的标识符(符号) 符号常量在程序开头定义,并且在程序中不可以改变值。 只可以在定义处修改,并且所有要替代处都做出相应的修改。 习惯上符号常量用大写字符。,例:求园面积,#define PI 3.14 main() float r,s; r=2; s=PI*r*r; printf(“s=%f“,s);
2、,EXP0301.C,变量,变量:在程序运行过程中,其值可以被改变的量。 变量在内存中占据一定的存储单元。 变量类型决定存储单元的大小。 变量名表示存储单元的值(该值在程序运行过程中可能随时变化)。,i,int i; i=9;,?,9,int a,b,c; a=123; b=456; c=a+b;,123,456,579,标识符,变量用标识符表示,即变量的名字。 标识符的要求: 以字母、数字、下划线组成 且第一个字符必须为字母或下划线 一般长度取8个字符(建议,不同系统) 关键字不能作为标示符,合法&不合法标识符,sum $123 int class day #33 month 3D64 st
3、udent_name main _above ab lotus_1_23 basic M.D.Jhon, int_a average _123,合法&不合法标识符,sum $123 int class day #33 month 3D64 student_name main _above ab lotus_1_23 basic M.D.Jhon int_a average _123,对所有要使用的变量必须定义,每一变量属于一个类型。 int a; float a;,大写字母和小写字母被认为是两个不同的字符。 int sum,SUM; 习惯上,变量名用小写字母表示 符号常量习惯上用大写字母标识。
4、,程序设计中变量的命名: 必须满足C语言的语法规定。 应该“见其名,知其意”,容易理解,方便阅读程序。 int sum; float average,area;,一定要“先定义、后使用“!,编译程序不能翻译未定义变量。 没有开辟空间,把数据放到哪里去? 编译程序在编译时根据变量类型确定存储单元的数量。 不同类型的变量占据的内存单元大小不同。,编译程序在编译时要根据变量类型进行语法检查。 例,整型变量a、b可以进行“求余”运算a%b 若把a、b定义为实型变量,则上述运算非法。,常量类型与变量类型比较,常量:整型、实型、字符型、字符串型 变量:整型、实型、字符型 没有字符串型变量,字符串由字符型数
5、组来存放!,整型数据,整型常量: 10进制数 8进制数(以0开头、0-7) 16进制数(以0x开头、0-f),能够进行各类数据的转换(含2进制),数制转换,2进制到10进制,20+24+26+27+29+212+214= 1+16+64+128+512+4096+16384= 21201,10进制转换为2进制,(20484096),0,0,0,0,1,1,1,0,1,0,1,1,0,0,0,1,2进制转换为8进制,6,2,7,3,5,1,0153726,2进制转换为16进制,6,D,7,D,0xD7D6,8进制转换为2进制,0153726,16进制转换为2进制,0xD7D6,8进制转换为10进
6、制,0123,3*80+2*81+1*82= 3*1+2*8+1*64= 83,10进制转换为8进制,(64512),1,2,3,0123,10进制转换成8进制也可以先转换成2进制,再转换成8进制 10进制与16进制的转换与8进制类似 16进制与8进制之间的转换略,整型变量分类,有符号,无符号,(有符号)基本整型 int,(有符号)短整型 short,(有符号)长整型 long,无符号基本整型 unsigned int,无符号长整型 unsigned long,无符号短整型 unsigned short,整型变量,整型变量在内存的存储形式,整型变量在内存中是以二进制数形式存在的 不同类型的整型
7、变量分别占据2或4个字节。 数制以补码形式表示(正数负数都是),正数补码就是其本身 负数补码:绝对值二进制按位求反加1得到 第一位为符号位(有符号时) 0表示正数、1表示负数,int a=9;,+1,int a=-9;内存中如何存储?,整型变量分类及参数,基本整型能表示的范围?,unsigned int a; a能表示多少的范围? 2字节16位二进制数 最大1111111111111111 最小0000000000000000 0到65535(216-1),基本整型能表示的范围?,int a; a能表示多少的范围? 最高位表示符号 最大0111111111111111 32767(215-1)
8、 最小1000000000000000 ?,int a; a的值是多少?,-1,按位求反,6,添负号,-6,求负数补码 负数绝对值(添负号) 按位求反 +1,负数补码转换成十进制 (上面的逆过程)?,int a; a的值是多少?,-1,按位求反,32768,添负号,-32768,基本整型能表示的范围?,int a; a能表示多少的范围? 最高位表示符号 最大0111111111111111 32767(215-1) 最小1000000000000000 ?,-32768,整型变量的定义,int a,b; unsigned short c,d; long e,f; unsigned g; 要在函
9、数的开头部分定义(声明)变量。,整型常量的类型,1、整型常量的值在-32768+32767范围内,编译器认为是int类型。 2、整型常量的值超过上述范围,而在 -214748648+214748647范围内,编译器认为是long类型。,3、在整型常量的值后面家字母L(l),则告诉编译器,把该整数常量作为long类型处理。 例:123L、0L 常量没有unsigned类型。,实型数据,实型常量 实数(real)又称为浮点数(float),表达方式: 小数表示: 0.123 、 .123 、 123.0 、 123. 、 0.0 (必须有小数点) 指数表示: 123e3 或 123E3 、123E
10、-2,实型数据内存存储方式,实型变量类型及参数,实型变量的定义,float x,y; /* 指定x、y为单精度实型变量 */ double z; /* 指定z为双精度实型变量 */,实型常量不分float型和double型。 一个实型常量可以赋给一个float型或double型变量。 根据变量的类型截取实型常量中相应的有效位数字。,float a; double b; a=12345.6789; b=12345.6789; 单精度a只能接收7位 双精度b能接收9位,作业: P65 3.3 (计算各种数制,除二进制外不算补码) 3.4 (除了char型),字符型数据,字符常量: 单引号括起来的一
11、个字符 如:a、x、D、?、$。 注意:a和A是不同的字符常量。(区分大小写),如何表示字符 , “开头的字符序列称为“转义序列“ “使其后字符变为另外的意义,转义字符,n t b r,换行 横向跳格 退格 回车,如何表示 & “ & , “ ,有没有另外一种方法实现?,输出是什么样的?,例: main() printf(“abctderftgn“);,制表区1,制表区2,f,g,字符变量,字符变量用来存放字符常量 定义形式及赋值: char c1,c2; c1=d; c2=a; 字符常量用单引号括起来,字符数据在内存中的存储形式及其使用方法,一个字符变量在内存中占一个字节 将一个字符常量放到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据类型 运算 表达式
链接地址:https://www.31doc.com/p-2254707.html