第02章之一(基本数据类型、运算符与表达式).ppt
《第02章之一(基本数据类型、运算符与表达式).ppt》由会员分享,可在线阅读,更多相关《第02章之一(基本数据类型、运算符与表达式).ppt(80页珍藏版)》请在三一文库上搜索。
1、下一讲,第2章:基本数据类型、运算符与表达式,学习的意义,学习C语言的目的是什么? 目的可能是为了: 期末考试 等级考试 研究生考试 程序员考试 ,最终目的是:用C语言编写程序来解决实际问题!,程 序 是什么?,程序是解决某种问题的一组指令的有序集合。 著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式: 程序 = 数据结构 + 算法,学习的意义,程序是什么?,对数据的描述。在C语言中,体现为数据类型的描述!,对数据处理的描述。是为解决一个问题而采取的方法和步骤,是程序的灵魂!,结论:学好C语言首先就必须十分了解C语言的数据类型、运算符与表达式。,掌握变量和常量的概念; 理解各
2、种类型的数据在内存中的存放形式; 掌握各种类型数据的常量的使用方法; 掌握各种整型、字符型、浮点型变量的定义和引用方法; 了解调用printf函数输出各种类型数据的方法; 掌握数据类型转换的规则以及强制数据类型转换的方法; 掌握赋值运算符、算术运算符、位运算符、逗号运算符以及sizeof的使用方法; 理解运算符的优先级和结合性的概念,记住所学的各种运算符的优先级关系和结合性。,学习目标,2.1.1 C语言数据类型,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 可对它进行的操作,本章所介绍的数据类型,2.1.2数据在计算机内的存储形式,字符型数据是以ASCII码值存储在计算机
3、中,占用1个字节,例如字符A存放形式:,例如字符E存放形式:,A的ASCII码值65,E的ASCII码值69,整型数据存储在计算机中,占用2个字节,例如9存放形式:,最高位是符号位,其值0表示正数,1表示负数。,例如-9存放形式:,2.1.2数据在计算机内的存储形式,单精度实型数据存储在计算机中,占用4个字节,例如26.7510=(11010.11)2 =(-1)025 (0.1101011)2 26.75的存储形式:,S,M,E,31 30 8 7 0,其中S表示数值的正负号,0表示正,1表示负。 M表示规格化的数值,即小数的首位为1。M确定了数值的精度。 E用移码表示指数。 浮点数的一般表
4、达形式(-1)S 2e规格化的尾数 E= 27 +e -27e27,-26.75的存储形式:,2.2 常量、变量和标识符 1. 标识符 定义:用来标识变量、常量、函数等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 C语言的关键字不能用作变量名 大小写敏感 长度:有效长度为32个字符。随系统而异,但至少前8个字符有效 命名原则: 变量名和函数名中的英文字母一般用小写,以增加可读性 见名知意 不宜混淆 如l与I, o与0,在TC2.0及BC3.1中,变量名(标识符)的有效长度为个字符,缺省值为,但在VC中其长度可达到255,例:判断下列标识符号合法性 sum S
5、um M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,M.D.John,3days,#33,char,$123,ab,.字符非法,数字3不可作首字符,#字符非法,char是关键字,字符非法,$不可作首字符,2.2 常量、变量和标识符 2. 常量 定义:程序运行时其值不能改变的量(即常数) 常量的分类 : 直接常量( 值常量或称为字面产量) 整型常量: 10、15、-10、-30 实型常量: 12.5、 30.0、-1.5 字符常量: A、b、c 字符串常量: “sum”、“A”、“123” 符号常
6、量 用标识符来代表常量。 其定义格式为:,#define 符号常量标识符 常量,#define NUM 20 #define PI 3.1415926,#include #define PRICE 30 void main ( ) int num, total; num = 10; total = num * PRICE; printf (“total = %d“, total); ,运行结果:total = 300,2.2 常量、变量和标识符 3. 变量 定义:程序运行时其值可以被改变的量 变量的三要素 :类型 、名称、值 变量的定义格式 : 变量的初始化:定义时赋初始值 变量的使用:先定义
7、,后赋值 变量定义位置:一般放在函数开头,存储类型 数据类型 变量名1,变量名2,变量名n;,int x, y, z; float radius, length, area; char ch;,决定分配字节数 和数的表示范围,合法标识符,例: int a = 2, b, c = 4; float data = 3.67; char ch = A; int x = 1, y = 1, z = 1;,例1: int student; stadent = 19; /Undefined symbol stadent in function main,例2: float a,b,c; c = a % b
8、; /Illegal use of floating point in function main,2.3 简单数据类型与表示范围,1. 整型数据,整型常量,十进制整数:由数字09和正负号表示 . 如:123,-456,0 八进制整数:由数字0开头,后跟数字07表示.如:0123,011 十六进制整数:由0x或0X开头,后跟09,af,AF表示.如0x123,0Xff,定义整数的符号常量 #define NUM1 20 /十进制数20 #define NUM2 020 /八进制数(十进制16) #define NUM3 0x2a /十六进制数(十进制42),思考题:下列整型常量哪些是非法的?
9、012,oX7A,00,078,0x5Ac,-0xFFFF,0034,7B。,首字符不能是字母o,八进制数中不能有数字8,十进制数中不能有字母B,2. 整数在内存中的表示,整数的数值在内存中用补码的形式存放。 求一个整数补码的方法:(假设用n个二进制位的内存单元来存储它),如果是正整数,采用符号-绝对值表示,即最高有效位(符号位)为0表示正,数的其余部分则表示数的绝对值; 如果是负整数,则先写出与该负数相对应的正数的补码表示,然后将其按位求反,最后在末位(最低位)加1; 然后将上述求得的补码的低n位存放于内存单元之中,就得到了该整数在内存中的表示,内存单元的最高位是符号位(0表示正,1表示负)
10、。,在TC2.0或BC3.1下,一个整数默认情况下需要2个字节(16位)的内存单元存放;而在VC6.0下,则需要4个字节(32位)。,2. 整数在内存中的表示,十进制整数,13: 对于16位的内存单元:,符号位,十进制数+13两个字节的内存实际存放形式,(+13)补 = 0000 0000 0000 1101,2. 整数在内存中的表示,十进制整数,13: 对于32位的内存单元:,十进制数+13四个字节的内存实际存放形式,(+13)补 = 0000 0000 0000 0000 0000 0000 0000 1101,符号位,记住:数据在内存中的存放位置是高位数字放在高地址的存储单元中,低位数字
11、放在低地址的存储单元中。,2. 整数在内存中的表示,十进制整数, 13: 对于16位的内存单元:,符号位,十进制数-13两个字节的内存实际存放形式,(+13)补 = 0000 0000 0000 1101,(-13)补 = 1111 1111 1111 0011,2. 整数在内存中的表示,十进制整数, 13: 对于32位的内存单元:,十进制数-13四个字节的内存实际存放形式,(+13)补 = 0000 0000 0000 0000 0000 0000 0000 1101,符号位,(-13)补 = 1111 1111 1111 1111 1111 1111 1111 0011,2. 整数在内存中
12、的表示,十进制整数,65537: 对于16位的内存单元:,(+65537)补 = 01 0000 0000 0000 0001,(-65537)补 = 10 1111 1111 1111 1111,十进制数-65537两个字节的内存实际存放形式,符号位,真值为:-1,不是-65537!,2. 整数在内存中的表示,十进制整数, 65537: 对于32位的内存单元:,十进制数-65537四个字节的内存实际存放形式,(+65537)补 = 0000 0000 0000 0001 0000 0000 0000 0001,符号位,表示负,(-65537)补 = 1111 1111 1111 1110 1
13、111 1111 1111 1111,真值为: -65537!,为什么-65537这个数在16位内存单元中的表示与在32位内存单元中的表示不相同呢?,这主要是因为-65537这个数超出了16位内存单元表示数的范围,所以实际存储的值(-1)与要表示的值(-65537)不同,但-32767并没有超出了32位内存单元表示数的范围,所以实际存储的值就是其本身。因此,我们在C语言中对数据处理时必须要注意数据的表示范围,以免引起不必要的错误。,2. 整数在内存中的表示,八进制整数,034: 对于16位的内存单元: 034 = (011 100)2,符号位,八进制数034两个字节的内存实际存放形式,(034
14、)补 = 0000 0000 0001 1100,对于32位的内存单元: (034)补 = 0000 0000 0000 0000 0000 0000 0001 1100,八进制数034四个字节的内存实际存放形式,符号位,2. 整数在内存中的表示,八进制整数, 034: 对于16位的内存单元:,符号位,八进制数-034两个字节的内存实际存放形式,(+034)补 = 0000 0000 0001 1100,(-034)补 = 1111 1111 1110 0100,对于32位的内存单元: (+034)补 = 0000 0000 0000 0000 0000 0000 0001 1100,(-03
15、4)补 = 1111 1111 1111 1111 1111 1111 1110 0100,八进制数-034四个字节的内存实际存放形式,符号位,2. 整数在内存中的表示,十六进制整数,0X8AB6: 对于16位的内存单元: 0X8AB6=(1000 1010 1011 0110)2,符号位 表示负,十六进制数0X8AB6两个字节的内存实际存放形式,(0X8AB6)补 = 0 1000 1010 1011 0110,真值为:-30026 !,对于32位的内存单元: (0X8AB6)补 = 0000 0000 0000 0000 1000 1010 1011 0110,十六进制数0X8AB6四个字
16、节的内存实际存放形式,符号位,真值为:+35510 !,溢出!,2. 整数在内存中的表示,十六进制整数,0X8AB6: 对于16位的内存单元:,(+0X8AB6)补 = 0 1000 1010 1011 0110,(-0X8AB6)补 = 1 0111 0101 0100 1010,十六进制数-0X8AB6两个字节的内存实际存放形式,符号位 表示正,真值为:+30026 !,对于32位的内存单元: (+0X8AB6)补 = 0000 0000 0000 0000 1000 1010 1011 0110,(-0X8AB6)补 = 1111 1111 1111 1111 0111 0101 010
17、0 1010,十六进制数-0X8AB6四个字节的内存实际存放形式,符号位 表示负,真值为:-35510 !,3. 整型变量,整型变量的定义,int 变量名, 变量名2,变量名n;,int必须小写,至少一个空格,必须为合法的标识符,以逗号,分隔,以分号;结尾,定义时可以赋初值,方法:在变量名后面增加“= 数值”,例: int a; int x, y, z; int m = 2, y = -3;,当程序中定义了一个变量时,计算机会为这个变量分配一个相应大小的内存单元。因此,这个变量是有值的,它的值就是对应内存单元的值。如果定义时没有赋初值,则这个值程序员是无法预知的。,整型变量的分类,修饰符 控制
18、变量是否有符号:signed(有符号)和unsigned(无符号) 控制整型变量的值域范围 :short(短)和long(长)。,有符号基本型(int) int a = -2; /定义一个有符号整型变量a,并赋初值-2 占一个机器字大小的内存单元。TC或BC3.1下,变量占2个字节(16位)的内存单元;VC6.0下,变量占4个字节(32位)的内存单元。,如果定义变量时,不指定signed,也不指定unsigned,则默认为signed(有符号),符号位,变量a占用的内存单元(2字节),有符号整型变量在内存中的实际存放形式(假设在BC3.1下),无符号基本型(unsigned int或unsig
19、ned),unsigned int a = 2; /定义一个无符号整型变量a,并赋初值2 或 unsigned a = 2; 占用的内存单元字节数同int类型。与int a = 2;等价。,unsigned int a = -2; /定义一个无符号整型变量a,并赋初值-2 或 unsigned a = -2;,无符号整型变量在内存中的实际存放形式(假设在BC3.1下),数据位,变量a占用的内存单元(2字节),其值为:65534 !,注意:对于有符号数也好还是无符号数也好,其实在计算机内存中表示是不加区分的,都是以其补码形式表示,只是我们怎样看待最高二进制位的问题,如果把最高位当成符号位看待,则
20、为有符号数,如果把最高位当成数据位看待,则变为无符号数。 例如:unsigned int a = -2; printf(“%d”,a);-有符号输出,则为-2 printf(“%u”,a);-无符号输出,则为65534,有符号短整型(short int或short),short int a = 2; /定义一个有符号短整型变量a,并赋初值2 或 short a = 2; 占用的内存单元为2个字节,无论是TC、BC,还是VC。,无符号短整型(unsigned short int或unsigned short),unsigned short int a = 2; /定义一个无符号短整型变量a,并赋
21、初值2 或 unsigned short a = 2; 占用的内存单元字节数同short类型。,在TC2.0和BC3.1下,unsigned short类型与unsigned int类型是等价的 。,有符号长整型(long int或long),long int a = 234567; /定义一个有符号长整型变量a,并赋初值234567 或 long a = 234567; 占用的内存单元为4个字节,无论是TC、BC,还是VC。,无符号长整型(unsigned long int或unsigned long),unsigned long int a = 2; /定义一个无符号长整型变量a,并赋初值
22、2 或 unsigned long a = 2; 占用的内存单元字节数同long类型。,在VC中long与int类型基本相同,均占四个字节的内存单元;但在TC或BC中,long类型与int类型只是所占字节不同外(long占4字节,int占2字节),其它数据处理方法是一样的。,【例】各种整型变量的定义,#include #define SUM 65535 void main ( ) int a, b = 20; unsigned int c = 0xff; long D; a = SUM; D = 301; printf(“a = %dn“, a); printf(“b = %dn“, b);
23、printf(“c = %dn“, c); printf(“D = %dn”, D); ,/文件包含,头文件说明,/定义符号常量SUM,值为65535,/定义两个int型变量a和b,b赋初值20,/定义无符号整型变量c,并赋初值0xff,/定义长整型变量D,/对a赋值为SUM,这时a的值是65535,/对D赋值为301,/以有符号十进制形式(“%d“)显示a的值,/以有符号十进制形式(“%d”)显示b的值,/以有符号十进制形式(“%d“)显示c的值,/以有符号十进制形式(“%d“)显示D的值,变量定义部分,语句执行部分,在TC2下运行结果: a = -1 b = 20 c = 255 D =
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 02 之一 基本 数据类型 运算 表达式
链接地址:https://www.31doc.com/p-3416412.html