




已阅读5页,还剩97页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2 章 基本数据类型 l2.1 C的数据类型 l2.2 常量与变量 l2.3 整型 l2.4 字符型 l2.5 浮点型 (Floating Point)数据 l2.6 字面值常量 l2.7 变量赋初值 (Initialization) l2.8 各类数值型数据间的混合运算 l小结、作业及实验 1 1 C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 第2章 基本数据类型 l在实际问题中,可能会遇到各种各样的数据。这 些数据都以某种特定的形式存在着。 n年龄:22 整数 n工资:2381.85 实数 n姓名: Hussein Sadam 字符串 l为了方便地表示这些不同种类的数据,C语言提 供了丰富的数据类型。 l本章仅介绍基本数据类型 2 2 C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 2.1 C的数据类型(Data Types) 数据类型 C语言要求,必须为出 现在程序中的所有数据 指定数据类型。 由于C语言把程序中的数 据又分为变量和常量两大 类,因此,不论是常量数 据还是变量数据,都要指 定数据类型。 C语言根据什么把数 据分为变量和常量? 3 3 C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 2.2 常量与变量 l计算机处理的数据都要存储,存储就要有空间。 l若空间中的数据被可以修改,这个空间就称为变量空间,简称变量 。 l若空间中的数据不能被修改,这个空间就称为常量空间,简称常量 。 l空间的大小和数据的存储格式由数据类型来决定。 l若需要一个变量空间,一般需要通过定义来要求系统分配,定义时 要指出变量(空间)的类型,并给出变量(空间)的名称,也称变 量(空间)标识符。 n这个名称由用户指定,但要符合命名规则。 n通过变量名读写变量空间数据的方式称为直接引用方式。 l变量定义的格式为:数据类型 标识符 变量名; nint m, n; /定义两个普通整型变量m 和n nfloat x; /定义一个单精度浮点实型变量x nchar ch; /定义一个字符型变量ch 4 4 C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 标识符 (Identifier) l标识符 n变量名、符号常量名、函数名、类型名 l标识符命名规范 n由字母、数字、下划线(Underscore, _)组成 n第一个字符必须为字母或下划线 nC语言标识符是大小写敏感的 l关于标识符应注意以下方面: n大小写敏感,sum,Sum,SUM是3个不同的标 识符。 n关键字不能作为标识符。 n一般不要使用以下划线开头的标识符 nANSI C未规定标识符的最大长度,TC最多允 许32个字符。 n应尽量做到“见名知意” 5 5 C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 标识符示例 l正确的标识符 nstudent、num1、_SUM、_1_2_3 nMyName、myname、my_name l错误的标识符 nroom3-1 包含了其他字符(减号) n2men以数字开头 nlong与关键字重复 nMr.Zhu 包含了其他字符(小数点) 6 6 C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 常量 (Constants) l常量 n程序运行过程中,其值不能被改变的量 n例如:12、-6.7、a n常量不仅能以字面常量的形式出现在程序中,还 能以符号常量的形式出现在程序里。 l常量与变量举例 nint a; nfloat b; na=-90; nb=3.14*2.1; 变量变量 常量常量 7 7 C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 常量示例:例2_补_1.c #define PRICE 30 #define NUM 12 void main() . . total = NUM * PRICE; total2 = 84 * PRICE2; printf(“total=%d“, total); . . 不会被替换 = total = 12 * 30; 常量 符号常量 8 8 C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 符号常量 (Symbolic Constants) l概念 n符号常量,就是用符号(标识符)代表的一个常量。 l定义方式:#define 符号名 常量值 l作用 n相当于把标识符用一个常量简单替换下来 n标识符是一个整体,不要试图拆开来替换 l在程序中,适当使用符号常量的好处: n能起到“见名知意”的作用,比直接写个常量直观 。 n能做到“一改全改”。 l关于符号常量再强调以下几点: n符号常量名习惯上常用大写; n符号常量是常量而不是变量,不允许用赋值运算 等改变它的值。 9 9 C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 符号常量 l 所谓符号常量,就是用符号代表的一个常量。 l符号常量的定义方式为: #define 符号名 常量 值 #define PI 3.14 #define SNO 1001 L=2*PI*1.5; s=PI*0.6*0.6; 符号常量符号常量 file1.c l如果在程序中某处定义了符 号常量(以PI为例), l从此往后,本文件中凡是出 现PI的地方都代表3.14;PI 可以和常量3.14一样参加运 算. 。 l为什么要用符号来表示一个 常量呢? l这样做有什么好处? 1010C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 符号常量 l在程序中,适当使用符号常 量的好处在于: n能起到“见名知意”的作用 ,比直接写个常量直观。 n能做到“一改全改”。 l关于符号常量再强调以下几 点 n符号常量名习惯上常用大 写; n符号常量是常量而不是变 量,不允许用赋值运算等改变 它的值 #define PI 3.14 #define SNO 1001 L=2*PI*1.5; s=PI*0.6*0.6; 1111C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 变量 (Variables) l内存(memory): n每台计算机都要有内 存,程序只有装入内存中 ,才可能被执行。 从逻辑上看,内 存是由一个个的字节构成的 。 每个字节可以容 纳8位二进制数。 每个字节都有唯 一的内存地址。 201 202 203 204 205 206 207 内存地址 内内 存存 00001111 一个字节 34 一 个 二 进 制 位 1212C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 变 量 所谓变量,就是在程序执行过程中,其值可以被改变的量。 通俗地讲,变量就像高档饭店的房间,这体现在以下几个方面: 对某个房间来说,一拨客 人走后,另一拨客人可以进来, 虽然房间不变,但里头吃饭的 人在变。 在C程序中,变量就是建立 在内存里的房间,它用来存储不 断变化的信息。存放在变量中的 信息称为变量值。 为了区分不同的房间,人 们为每个房间起一个名字,比 如百合厅、玫瑰厅等。 每个变量也有变量名。 房间有大小、档次之分。 变量有类型之分,变量的数 据类型决定了可以容纳的信息种 类,也决定了所占单元的大小。 每个房间有自己的房间号, 而且房间名与房间号有对应关 系。 每个变量有自己的存储地址 ,而且变量名与存储地址有对应 关系。 总之,变量具有名字、类型、值、地址等属性。 1313C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 下面结合例子来理解变量的这些属性。 #include void main() int a; a=10; a=50; a=a*2; printf(”a=%dn”,a) ; 在C程序中,变量都是先定义、后使用 变量的定义格式:数据类型 变量名; 对于程序中定义的每个变量, TC会根据变量的数据类型,为 它分配一定大小的存储单元。 同时,也在变量名与变量的内 存地址之间建立了对应关系。 该赋值语句会把10存放到变量a 中,于是a的值变为了10。 变量 (Variables) 下面结合例子来理解变量的这些属性。 1414C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 程序举例2.1:定义变量,检验变量空间大小和地址,给变量赋值,并在显 示器上显示变量的值(参见演示) #include /包含printf 的原型 int main() int m,n; /定义两个整型变量 float x; /定义一个单浮点型变量 char ch; /定义一个字符型变量 printf(“%d,%d,%dn”,sizeof(m),sizeof(x),sizeof(ch);/按十进制输出变量值 printf(“%x,%x,%x,%xn“, /按十六进制输出变量空间地 址 m=70; /用常量给变量赋值,70 表示普通整型常量 x=3.14F; /用常量给变量赋值,3.14F 表示单浮点型常量 ch=A; /用常量给变量赋值,A表示字符型常量 n=m; /把变量m 的值赋给变量n printf(“%d,%d,%f,%cn“,m,n,x,ch);/输出变量的值 printf(“m=%d,n=%d,x=%f,ch=%cn”,m,n,x,ch); /另一种输出变量值的格 式 return(0); l l4,4,1 l12ff7c,12ff78,12ff74,12ff70 l70,70,3.140000,A lm=70,n=70,x=3.140000,ch= A 1515C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 说明: l主函数框架 nint main() n n 一组程序语句 n return(0); n lmain 是主函数名,相当于机器语言程序的入口地址。 n一对大括号是函数体,包括一组程序语句(简称语句),语句相 当于机器语言指令,每条语句以分号结束。 l“/”是注释部分,说明语句功能,便于理解,它不是程序语句。 n如果一个注释有多行,每行前都要加“/”。例如: n注释行也常常采用“/*/”的形式, l一条语句可以同时定义几个变量,变量名彼此用逗号分隔, n例如:int m,n;一行可以书写几条语句, n例如:int m,n; float x; char ch;一条语句如果很长,可以分几行书 写,但是变量名或函数名不能分行写。 1616C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 说明: l变量初始化 n变量可以在定义的同时赋值,称为初始化: int m=70; /初始化 n变量初始化与赋初值是不同的:初始化是在变量 定义的同时赋值,赋初值是指变量定义之后的第一次 赋值。初始化等于赋初值,但是赋初值不等于初始化 。 n下面的例子是赋初值,但不是初始化: int m,n; m=70; /给m 赋初值 n=m; /给n 赋初值 1717C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 说明: l赋值操作符 n变量位于赋值操作符“=”左端,表示给变量赋值或 写入,位于右端,表示从变量取值或读取。 l文件包含命令 n#include是文件包含命令,stdio.h 是库 文件,含有包括系统函数printf 在内的输入输出函数 的原型。 n如果不包含这个命令而调用printf 函数,系统视 为非法。系统报错:printfundefined(printf 没有定 义) 1818C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 格式输出函数printf l前面的例题中我们已多次用过这个函数。 l函数的一般形式: nprintf(“格式控制字符串”,输出表列) l函数功能: n对于任意类型数据按用户指定的数据格式输出到显 示器屏幕上。 l返回值 n若成功,返回输出的字节数,包括换行符 n若失败,返回EOF (End of File) l参数说明(见下一页) 1919C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf的参数说明 l格式控制字符串: n由包括“格式说明”和“普通字符”组成,用于指定输出格式。 n “格式说明”:由%和“格式字符”组成,以说明输出数据的类 型、形式、长度、小数位数等。 n“普通字符” :在输出时原样照印,在显示中起提示作用 l输出列表 n给出了需要输出的数据项 n可以是变量、常量、表达式、函数调用等 n输出数据项与“格式说明” 在数量和类型上应该一一对应 nprintf(“格式控制字符串”,输出表列) 2020C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf的格式举例 printf(“a=%d b=%d“, a, b); 格式说明普通字符输出列表 输出结果:a=3 b=4 格式字符串其一般形式为: 标志输出最小宽度.精度长度 类型 其格式符和意义如下所示: 2121C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 表2.1 格式字符 格式说明 符 输出形式举例输出结果 %d(%i)十进制整型int a=123;printf(“%d“,a);123 %x(%X)十六进制整型int b=123;printf(“%x“,b);7b %o八进制整型int c=123;printf(“%o“,c);173 %u无符号十进制 整型 unsigned d=123;printf(“%u“,d); 123 %c(%C)单个字符char ch=A;printf(“%c“,ch);A %f浮点十进制, 默认小数6 位 float x=123.5;printf(“%f“,x); 123.50000 0 %g(或G)浮点十进制, 舍无效0 float y=123.5;printf(“%g“,y);123.5 2222C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 表2.1 格式字符 格式说明符输出形式举例输出结果 %e(%E)浮点十进制 指数形式 float z=123.5;printf(“%e“,z);1.235000e+00 2 %Ld十进制长 整型 long n=123456;printf(“%Ld“,n); 123456 %Lf十进制双浮 点型 printf(“%Lf“,123.56789);123.567890 %Lo八进制长 整型 long m=123456;printf(“%Lo“,m); 361100 %Lx 十六进制 长整型 long p=123456;printf(“%Lx“,p); 1e240 %s字符串char *str=“china“;printf(“%s“,str); china 2323C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf格式举例说明 1. d格式符(例2_补_8.c) l作用:按整型数据的实际长度输出。 l基本格式:%d l格式一:%md nm为指定的输出字段的宽度。 n若数据的位数小于m, 则左端补以空格, n若数据的位数大于,则按实际位数输出。 l例1: na=123,b=12345, printf(“%4d,%4d“,a,b); n则输出结果为 123,12345 l格式二: %ld n输出长整型数据。 l例2: n若 long a=135790; printf(“%ld”,a); n则输出为: 135790 2424C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf格式举例说明 2. o格式符(例2_补_8.c) l作用:以八进制数形式输出整数。 l基本格式:%o n说明:由于将内存中的各位值(0或1)按八进制形式输出,则 输出的数值不带符号,将符号位也一起输出。 n例1: int a=-1; printf(“%d,%o“,a,a); -1在内存中的形式(补码)为:1111 1111 1111 1111 输出结果 -1,177777 不会输出带负号的八进制整数。 l格式一:%lo n输出对长整数(long型) l格式二: %mo n指定输出数据的字段宽度。 n例2: int a=-1; printf(“%8o”,a) 输出结果:177777 2525C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf格式举例说明 3. x格式符(例2_补_9.c) l作用:以十六进制数形式输出整数。 l基本格式:%x n不会出现负的十六进制数 (原理同上)。 n例1:int a=-1; printf(“%x,%o,%d”,a,a ,a); n 输出结果: ffff,177777,-1 l格式一:%lx n输出长整型数, 如long a=2000; printf(“%lx”,a); l格式二:%mx n指定输出字段的宽度,如“%12x”。 2626C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf格式举例说明 4. u格式符(例2_补_8.c) l作用: n用来以十进制形式输出无符号( unsigned型)整数。 l基本格式:%u l例1:int a=567, printf(“%u”,a ) 输出结果567 main() /*例4-4.c */ unsigned int a=65535; int b=-2; printf(“a=%d, %o, %x, %un“, a, a, a, a) printf(“b=%d, %o, %x, %un“, b, b, b, b) ; 运行结果为: a=-1,177777,ffff,65535 b=-2,177776,fffe,65534 l说明: l一个有符号整数(int型)也可 以用%u格式输出; l一个unsigned型数据也可以 用%d格式输出。 l按相互赋值的规则处理 lunsigned型数据也可用%o 或%x格式输出 2727C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型数据的输出小结 整型数据可以有以下的输出格式供选择: 按有符号的十进制形式输出整型数据,使用格式说明%d 。 按无符号的八进制形式输出整型数据,使用格式说明%o 。 另外,通过在%与格式字符之间加上修饰符l,就能按相 应形式输出长整型数据。例如, 按无符号的十进制形式输出整型数据,使用格式说明%u 。 按无符号的十六进制形式输出整型数据,使用格式说明%x 。 按有符号的十进制形式输出长整型数据,使用格式说明%ld 。 按无符号的十六进制形式输出长整型数据,使用格式说明 %lx. 2828C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf格式举例说明 5. c格式符(例2_补_10-1.c) l作用:用来输出一个字符。 l基本格式:%c n例1:char c=a;printf(“%c“,c); 输出结果:a l说明 n “%c”中的c是格式符,逗号右边的c是变量名,不要混。 n 一个整数,只要它的值在0255范围内,也可以用字符形 式输出,输出前,系统将该整数作为ASCII码转换成相应字符; n反之,一个字符数据也可以用整数形式输出。 l格式一:%mc n指定输出字数宽度 n例2:char c=B;printf(“A%3c”,c);输出:“A a” 。 main() /*字符数据的输出。*/ char c=a; int i=97; printf(“%c,%dn“,c,c); printf(“%c,%dn“,i,i); 运行结果为: a,97 a,97 2929C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf格式举例说明 6. s格式符(例2_补_10-2.c) l作用:用来输出一个字符串。 l基本格式:%s l例1:printf(“%s”,“china”);输出结果:china(没有双引号)。 l格式一:%ms n输出的字符串占列, n若字符串本身长度大于m,则突破的限制,将字符串全部输出。 若字符串本身长度小于m,则左补空格。 l格式二:%-ms n如果串长小于,则在列范围内,字符串向左靠,右补空格。 l格式三:%mns n输出占列,但只取字符串中左端n个字符。 n这n个字符输出在列的右侧,左补空格。 l格式四:%-mns n在列范围的左侧输出字符串左端的n个字符,右补空格。 n如果n,则自动取n值,即保证n个字符正常输出。 main() /*例4-5-2.c字符串的输出。*/ printf(“%3s,%7.2s,%.4s,%-5.3sn”,“china”, “china”, “china“, “china“) 输出结果: china, ch,chin,chi 3030C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 字符型数据的输出小结 输出单个字符, 使用格式说明%c。 字符型数据输出有两种方式: 输出字符串, 使用格式说明%s。 3131C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf格式举例说明 7. f格式符(例2_补_11.c) l作用: n用来以小数形式输出实数(包括单、双精度)。 l基本格式:%f n不指定字段宽度,由系统自动指定,使整数部分全部如数输 出,并输出6位小数。 n注意: 并非全部数字都是有效数字。 单精度实数的有效位数一般为7位。 l格式一:%.nf n指定输出的数据共占列,其中有n位小数。 n如果数值长度小于,则左端补空格。 l格式二:%-.nf n与%.nf基本相同,只是使输出的数值向左端靠,右端补空 格。 3232C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf格式举例说明 7. f格式符应用举例 例2_补_11-1.c输出实数时有效位 数。 main() float x,y; x=111111111; y=222222222; printf(“%f”,x+y); 输出结果: 333333328125 例2_补_11-2.c输出双精度数有效 位数。 main() double x,y; x=1111111111111.111111111; y=2222222222222.222222222; printf(“%f“,x+y); 输出结果: 3333333333333.333010 例2_补_11-3.c输出实数时指定小数位数。 main() float f=123.456; printf(“%f %10f %10.2f %.2f %-10.2fn“,f,f,f,f,f); 输出结果:123.456001 123.456001 123.46 123.46 123.46 3333C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf格式举例说明 7. e格式符(例2_补_12.c) l作用: n按规范化指数形式(小数点前有且只有1位非零数字)输出实数。 l基本格式: %e l说明: n不指定输出数据所占的宽度和数字部分的小数位数; n有的c编译系统自动指定6位小数,指数部分占5位(如e+002),其中 “e”占1位,指数符号占1位,指数占3位。 nprintf(“%e“,123.456);输出:1.234560e+002。( 不同系统略有不同 ) l格式一: %m.ne 和 %-m.ne n、n和“-”字符含义与前相同。此处n指拟输出的数据的小数部分( 又称尾数)的小数位数。 l例如,f=123.456, nprintf(“%e %10e %10.2e %.2e %-10.2e”,f,f,f,f,f); n结果:1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 1.23e+002 3434C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 函数printf格式举例说明 9. g格式符 l作用: n用来输出实数,它根据数值的大小,自动选f格式或e格式中 输出宽度较小的一种,且不输出无意义的零。 l基本格式:%g l例1,若f=123468,则printf(“%f %e %g”,f,f,f) ; n输出: 123.468000 1.234680e+002 123.468 n 10列 13列 10列 l说明: n用%f格式输出占10列,用%e格式输出占13列, n用%g格式时,自动从上面两种格式中选择短者,故占10列 , n按%f格式输出,最后3个小数位“0”为无意义的0,不输出, n因此输出123.468,然后右补3个空格。 n%g格式用得较少 3535C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 实型数据的输出小结 实型数据的输出常采用两种方式: 按十进制小数形式,使用格式说明%f,这种输出方式除输 出整数部分外,还会输出6位小数 按规范化的指数形式,使用格式说明%e,这种输出方式会 按规范化的指数形式输出。 关于实型数据输出强调以下几点: 在输出单精度数据和双精度数据时,使用相同的格式说明。 在输出的数字中,并非所有的数字都是有效数字。系统在输 出单精度数据时,一般前67位是有效数字;双精度数据是 1516位。 可以用%m.nf指定数据的最小输出宽度以及小数部分的位数 。 可以用修饰符“”(如%m.nf)实现左对齐的效果。 3636C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 格式输出函数printf小结 l上面介绍了主要的格式字符。 l关于格式输出再强调以下几点: n 转义字符可以出现在格式控制串中。 例如,printf(”nabct%d”,i); n 在格式控制串中,除格式说明之外的字符均作 为普通字符输出。 例如, printf(”c=%cf=%fs=%s”,A+32,3.14,”BYE”); n 在格式控制串中,要输出字符%,必须用% 表示。 例如,printf(”%.2f%”,5.126); 会输出 5.13% 。 n 要根据被输出表达式的数据类型以及希望的格 式,选用合适的格式说明。 3737C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 程序中常见错误 l 变量必须先定义或声明,后使用,否则就是 一个错误。出现这种错误的原因大多是拼写有误 。 n例如:int temp; tmp=5; /把temp 错写为tmp n系统报错:tmp : undeclared identifier(tmp 是 没有声明的标识符即名称)。 l如果变量没有赋初值,它的值是一个不可预测 的值。例如: nint temp; printf(“%d“,temp); /变量a 没有赋初值 ,结果是一个不可预测的值 n系统警告:local variable temp used without having been initialized(局部变量temp 没有初值)。 3838C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 程序中常见错误 l 语句之后丢失分号。 n例如:int a,b /丢失分号。 n正确的书写是:int a,b; a=3; b=4; n系统报错:missing ; before identifier a(标识 符a 之前缺少分号)。而且系统的错误标志指向的是 第2 条语句,而不是第1 条语句,这是为什么呢? n因为语句可以换行,定义语句“inta,b;”可以分两 行书写,其中的分号可以单独出现在第2 行,所以系 统是在语句“a=3;”之前还没有遇到分号时才报错。 l 在格式控制字符串之后丢失逗号: nprintf(“%d“n); /正确的书写是: printf(“%d“,n); n系统报错:missing ) before n(n 之前丢失右括 号)。系统按最简单的形式处理。 3939C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 程序中常见错误 l 整型数和浮点型数的存储格式不同,整型数 不能按浮点格式显示,反之亦然。 n例如: nint a=12; float f=12.5; nprintf(“a=%fn“,a); /错!整型数不能按浮点格式 显示 nprintf(“f=%dn“,f); /错!浮点型数不能按整型格 式显示 n系统没有报错,但是显示结果都是0。 l 对程序语句中出现的中文输入方式下的逗号 、分号、小括号等分隔符,系统都要报错: unknown character 0xa3。 4040C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 2.3整型 (Integer)数据 l数制和数制之间的转换 l整型常量的表示方法 l整型变量 n整型数据在内存中的存放形式 n整型变量的类型 n整型变量的定义 n整型数据的溢出 l整型常量的类型 4141C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型常量的表示方法 l整型常量可以以三种形式出现在C程序中。 l十进制 (Decimal) n例如,123、-456、0 l八进制 (Octal) n为避免与十进制混淆,八进制以0开头,不得含有8 或9 n例如,(0123)8= 182+281+380=(83)10 、-0456 n错例,0138、-0912 l十六进制 (Hexadecimal) n以0x或0X开头,用af或AF表示1015 n例如,(0x123)16= 1162+2161+3160 =(291)10 n -0X45、0x3AB、-0xabc 4242C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型变量的表示方法 l首先,定义整型变量,其形式 为:int 变量名; n例如 int i; n TC系统会在内存中为变量I 分配2字节的存储单元,共计16个 二进制位。 l其次,用赋值语句把整型数据 存放到变量i中。 n例如, i=10; 可以把10存放到 变量i中,也就是把10存放到变量i 的2字节的存储单元中。 l再次,在变量中有值以后,我 们可以用%d格式符来输出整型 变量值, n例如, printf(”%d”,i); 会输 出10。 内存 201 202 203 204 205 206 207 i 10 整型数据10在存 储单元中是如何 存放的呢? 4343C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型数据在内存中的存放方式 内存 201 202 203 204 205 206 207 i 0 0 0 0 00011 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 高地址字节低地址字节 l整型数据在存储单元中是如何存放 的呢?即,如何用16位二进制数来 表示整型数据呢?分两种情况: n 1若数据0,数据直接以 其二进制形式存放 由于10的二进制形式 是1010,所以10的存放情况 如图所示。 如果把两个字节画在 同一行上,就有 4444C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型数据在内存中的存放方式 l2若数据0,数据以其补 码形式存放。 n求负数的补码的方法:将负 数的绝对值的二进制形式按位 取反,再加1 n由于-10的补码为 1111111111110110,所以-10的 存放情况如图所示。 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 高地址字节低地址字节 内存 201 202 203 204 205 206 207 i 1 1 1 1 11001 1 1 1 1 1 1 1 4545C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 补码举例 l举例 nint i=-50; /*int类型占2字节*/ 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 50的原码 -50的补码 取反 加一 l补码 (Complement) n正数:与原码一致,首位为0 n负数:绝对值取反加一,首位为1 n零:各位全为0 4646C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型数据在内存中的存放方式 注意:在 10的存储表示中,其最左面的一位为0; 在-10的存储表示中,其最左面的一位为1。 10的存储表示 -10的存储表示 实际上,在整数的16位中,最左面的一位是表示符号的,也称 为符号位。该位为0,表示数据为正;该位为1,表示数据为负。 这样一来,一个int型变量值最大为 即为2151=32767 类似地,一个int型变量值最小为 即为215=32768 符号位符号位 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 高地址字节低地址字节 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4747C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型变量的分类 l在Turbo C中,一个int型变量值的范围为32768 32767。即,一个int型变量仅能存放这个范围之间的整数 。 l但在有些场合,这个范围太小,无法容纳某些整型数据 。例如,全国人口数、汽车数等。另外,在有些情况下 ,这个范围又显得过大,造成内存的浪费,例如年龄、 月份等。 l于是,C语言又对整型变量作了进一步的分类,按占用 存储空间的大小细分为三种: n基本整型 int, 如int sum; n短整型 short int, 如short age; n长整型 long int, 如long popul; 4848C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整数的长度 l整数的类型与长度 nshort:占2字节/16bit 取值范围:-3276832767 nlong: 占4字节/32bit取值范围:-231(231-1) nint: 占2或4字节/16或32bit 取值范围:-3276832767 (16bit ) n若需要精确的长度,可选用short或long l各类型的变量可以容纳的整数范围取决于为各类型的变 量所分配的存储单元的大小。 n ANSI C并未具体规定各类整型变量的存储单元的大小,具 体由各厂家自行决定,但要符合以下原则: n长整型的存储单元基本整型的存储单元短整型的存储单元 n一般,2Bytes = short int long = 4Bytes n例如: Borland C3.1:int长度为2Bytes Microsoft C:int长度为4Bytes 4949C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型变量的定义 (Definition) l定义形式 nsigned int a, b; unsigned c; nsigned long d; unsigned short e; l变量的定义一般放在一个函数开头的声明部分,关于变 量定义的具体内容在以后相关章节里详细介绍 l有符号数 n二进制补码表示,首位为符号位 n指定signed或缺省情况,即为有符号数 l无符号数 n没有符号位,只能表示非负数 n无符号数类型必须指定为unsigned n若把负数赋值给无符号数,则把该负数的补码当 作无符号数进行处理 为什么需要无符号数? 程序举例 5050C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型变量的定义与使用举例 lvoid main() l l int a;/*定义有符号基本整型变量a*/ l unsigned b; /*定义无符号基本整型变量b*/ l long c; /*定义有符号长整型变量c*/ l a = -23;/*a的值为-23*/ l b = 45; /*b的值为45*/ l c = a + b;/*c的值为22*/ l 5151C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 无符号整型变量 l在有些应用场合,涉及的整数均为非负整数,如 学号、年龄、人口数等。在这种情况下,可以使 用无符号整型变量。 l无符号整型变量也有三种类型: n符号基本整型:unsigned int 例 unsigned stu_no; n无符号短整型:unsigned short int 例 unsigned short age; n无符号长整型:unsigned long int 例 unsigned long population; l另外, 无符号整型与对应的有符号整型所需存 储单元大小相同。 5252C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 无符号整型变量和有符号整型变量的区别 有符号整型变量b的存储单元中最 左一位代表符号(0为正,1为负) 无符号变量a只能表示非负整数。 下面以如下定义的变量a、b为例来加以说明。 unsigned int a; int b; 无符号整型变量a的存储单元中 所有二进制位都用来存放数据本 身,并无符号位。 最大值:216-1=65535 最小值:0 最大值:215-1=32767 最小值:-215=-32768 一般地说,无符号整型变量所能表示的最大值比有符号整型变量 所能表示的最大值扩大一倍。 有符号整型变量b正负均可。 a的取值范围为065535 b的取值范围为3276832767 0000000000000000 100 0000000000000 0111111111111111 符号位 1111111111111111 5353C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 有符号数与无符号数举例 l例2_补_2.c lvoid main() l l int i; l unsigned j; l i=j=-50; l i=i/2; /*-25*/ l j=j/2; /*32743*/ l 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 -50的补码i,j / 2 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 i/2-25的补码 j/2 32743的补码/原码 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 5454C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型数据的取值范围 类 型 长度 (bit) 取值范围 signed short int16-215 215-1 unsigned short int160 216-1 signed int16 or 32-215(31) 215(31)-1 unsigned int16 or 320 216(32)-1 signed long int32-231 231-1 unsigned long int320 232-1 5555C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型数据的溢出 (Overflow) l溢出 n数据超出了变量能够存储的范围,造成数据丢失 或数值改变等 例2_补_3.c void main() int a = 32767; a+; /*32768?*/ 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 32767的补码 -32768的补码 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5656C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型常量的类型 l常量的类型后缀 (Suffix) nl、L表示常量是一个长整型 nu、U表示常量是一个无符号整型数 n两种后缀可以一起使用 l举例 n123l长整型常数123 n456U无符号整型常数456 n789ul无符号长整型常数789 n101Lu无符号长整型常数101 5757C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型常量使用中的类型问题 l对整型变量赋值 n常量的值不要超过变量的取值范围 l直接使用常量 n带有l、L、u、U等后缀的整型常量一般用于函数 调用 n不带有后缀的整型常量的类型,是根据其数值大 小所处的范围来确定的 5858C C语言程序设计语言程序设计 - - 第第2 2章章 基本数据类型基本数据类型 整型变量总结 l下面列出了C语言中提供的六种整数类型。 n基本整型:int n短整型: short int n长整型: long int n无符号基本整型:unsigned int n无符号短整型: unsigned short int n无符号长整型: unsigned long int l虽然ANSI C并未统一规定各类整型变量的存储 单元所占字节数,但每个C系统都有自己的明确规 定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纸容器印刷与装饰技术考核试卷
- 贵金属精炼中的贵金属矿床资源可持续发展战略规划考核试卷
- 运动防护用具材料研发进展考核试卷
- 选矿实验方法与技巧考核试卷
- 水电工程信息系统安全与防护措施考核试卷
- 草原生态保护与利用考核试卷
- 小儿饮食护理
- 海外留学申请文书专业撰写与推广服务协议
- 海外复杂地质环境无人机租赁及地质成果解析协议
- 金融存管安全风险评估及应对协议
- YS/T 22-2010锑酸钠
- GB/T 4490-2021织物芯输送带宽度和长度
- GB/T 3299-2011日用陶瓷器吸水率测定方法
- GB/T 18867-2014电子工业用气体六氟化硫
- FZ/T 51011-2014纤维级聚己二酰己二胺切片
- 第15课《驿路梨花》教学实录
- 思想道德修养与法律基础(完整版PPT)
- 动物英语俚语课件
- 幼儿园课件-神奇的中草药
- 金坛区苏科版六年级心理健康教育第18课《中学遐想》课件(定稿)
- 小学生民法典主题班会PPT
评论
0/150
提交评论