资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第二章 基本数据类型与顺序程序设计,2.1 常量 变量,2.1.1常量,在程序运行时,其值不能被改变的量称为,常量,。常量可分为三种:,整型常量,实型常量,字符型常量,【例如】,1、2、12是整型常量;2.1、12.5、3.14是实型常量;a、b、c是字符型常量,第二章 基本数据类型与顺序程序设计2.1 常量 变,1,符号常量,在C语言中可以用一个标示符表示一个常量,称之为符号常量。,符号常量是一种特殊的常量,其值和类型是通过符号常量的定义命令决定的。,符号常量在C语言中可以用一个标示符表示一个常量,称之为符号常,2,符号常量,符号常量在使用之前必须先定义,期一般形式为:,#define 标示符 常量,符号常量符号常量在使用之前必须先定义,期一般形式为:,3,【说明】,1、#define 是一条预处理命令,又被称为宏定义命令,其功能是把命令格式中的标示符定义为其后的常量值。,2、一经定义,以后在程序中所有出现该标示符的地方以该常量值代之。,3、习惯上符号常量的标示符用大写字母表示,变量标示符用小写字母表示,以示区别。,4、用define进行定义时,必须用“#”号作为一行的开头,在#dinfine命令行的最后不得加分号结束,【说明】,4,【例2-1】求边长为20 的正方形的面积,#define LENGTH 20,#include,void main(),Float s;,s=LENGTH*LENGTH,printf(“s=%fn”,s),在主函数中,S被定义为float型,即实型;在主函数之前由宏定义命令定义,LENGTH为20,程序执行过程中即以LENGTH代替20.即,S=LENGTH*LENGTH等效于S=20*20,在程序中,不能再用赋值语句对符号常量重新赋值,也就是说,在本例中不能再对,LENGTH赋值,【例2-1】求边长为20 的正方形的面积#define LE,5,【注意】,在使用符号常量时,一般要做到“见名知意”,如上面的程序LENGTH就是正方形的边长。,使用符号变量的一个最大好处就是能够做到“一改全改”,例如,想知道另一个边长为10 的正方形的面积,那么只需作如下改变:,#define LENGTH 10,这样就能轻松的到达目的了。,【注意】在使用符号常量时,一般要做到“见名知意”,如上面的,6,2.1.2变量,变量:在程序运行过程中,其值可以改变的量为变量。,例如:,例如,:一元一次方程y=12x+16,X是自变量,y是因变量,也就是说y会随着x 的变化而变化,所以x,y都是变量,2.1.2变量变量:在程序运行过程中,其值可以改变的量为变量,7,变量的两个要素,变量名:变量名的名称,变量的命名遵循标示符的命名规则。,变量值:一个变量名实质上是代表了内存中的一个存储单元,该单元中的存储内容就是变量值。,变量的两个要素变量名:变量名的名称,变量的命名遵循标示符的命,8,变量的定义,一条变量定义语句由数据类型和其后的一个或多个变量组成,其形式如下:,数据类型 变量名1,变量名2,;,【例如】,int name,age;,Int :数据类型 name变量名1 age变量名2,变量的定义一条变量定义语句由数据类型和其后的一个或多个变量组,9,说明,1、我们把“变量名1,变量名2”称之为变量名表。变量名表可以由一个或者多个标示符,也就是说我们可以同时定义相同数据类型的的多个变量。,2、上述格式中”表示其中的内容是可选项,即可有可无,如无特殊说明,以后出现都表示相同的含义。,3、数据类型与变量名之间至少用一个空格隔开。当定义多个变量时,每两个标示符名之间用“,”隔开。,说明1、我们把“变量名1,变量名2”称之为变量名表。变量名表,10,思考?,在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?,思考?在C语言中,变量名total与变量名TOTAL、,11,变量的初始化,在定义变量之后,我们可以根据需要赋予它一个初始值,即变量的初始化。在定义变量的同时,也可以对变量进行初始化,它的形式一般如下:,数据类型 变量名1=初值,变量名2=初始值2;,变量的初始化在定义变量之后,我们可以根据需要赋予它一个初始值,12,【例如】,Float price=2.5,length,area;,float 数据类型,price=2.5 赋初始值的变量名1,length,area未赋初始值的变量名2和变量名3,【例如】Float price=2.5,length,13,简单的数据类型,整型数据,整型变量,分类,(可分三类),基本整型:用int表示,在内存中占4个字节,短整型:用short int或short表示,在内存中占2个字节,长整型:用long int 或long表示,在内存中占4个字节,为了增加变量的取值范围,还可以将变量定义为“无符号型”。详见课本22页。,简单的数据类型,14,整型变了的定义,定义形式如下:,类型说明符 变量名1,变量名2,;,【说明】,1、允许在一个类型说明符后说明多个相同类型的变量。类型说明符与变量名之间至少用一个空格隔开。当定义多个变量名时,两个变量名之间用逗号隔开,最后一个变量名必须以;结束。,2、变量说明必须放在变量使用之前,必须遵守先说明后使用的原则,一般放在函数体的开头部分,整型变了的定义定义形式如下:,15,【例如】,int a,b,c;/*a,b,c为整型变量*/,long d,e;/*d,e为长整型变量*/,unsigned f,g;/*a,b,c为无符号整型变量*/,【例如】int a,b,c;/*a,b,c为,16,整型常量,整型常量即整型常数。按不同进制,整型常量有3种表示方法,分别是十进制法、八进制法和十六进制数表示法。,十进制数表示法。十进制整常量没有后缀,其数码为0-9.,【例如】237、-567、65535、1647都是合法的十进制整型常量。,整型常量整型常量即整型常数。按不同进制,整型常量有3种表示方,17,八进制,八进制就是逢8进1,采用 07这八数来表达一个数。,八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方,所以,设有一个八进制数:1507,转换为十进制为:,用竖式表示:,1507换算成十进制。,第0位 7*80=7,第1位0*81=0,第2位5*82=320,第3位1*83=512,-,839,同样,我们也可以用横式直接计算:,7*80+0*81+5*82+1*83=839,结果是,八进制数1507 转换成十进制数为839,八进制八进制就是逢8进1,采用 07这八数来表达一个数,18,八进制数的表达方法,C,C+语言中,如何表达一个八进制数呢?如果这个数是876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。,所以,C,C+规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数在C、C+中的表达方法。,八进制数的表达方法C,C+语言中,如何表达一个八进制数呢,19,十六进制数转换成十进制数,8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;,10进制,用十个阿拉伯数字:0到9,16进制,用十六个阿拉伯数字等等,阿拉伯人或说是印度人,只发明了10个数字啊?,16进制就是逢16进1,但我们只有09这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。,十六进制数转换成十进制数8进制,用八个阿拉伯数字:0、1,20,所以,在第N(N从0开始)位上,如果是是数 X(X 大于等于0,并且X小于等于15,即:F)表示的大小为 X*16的N次方。,假设有一个十六进数 2AF5,那么如何换算成10进制呢?,用竖式计算:,2AF5换算成10进制:,第0位:5*160=5,第1位:F*161=240,第2位:A*162=2560,第3位:2*163=8192,-,10997,直接计算就是:,5*160+F*161+A*162+2*163=10997,(别忘了,在上面的计算中,A表示10,而F表示15),所以,在第N(N从0开始)位上,如果是是数 X(X 大于,21,十六进制数的表达方法,如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。,C,C+规定,16进制数必须以 0 x开头。比如0 x1表示一个16进制数。而1则表示一个十进制。另外如:0 xff,0 xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0 x中的0是数字0,而不是字母O),以下是一些用法示例:,int a=0 x100F;,int b=0 x70+a;,十六进制数的表达方法如果不使用特殊的书写形式,16进制,22,至此,我们学完了所有进制:10进制,8进制,16进制数的表达方式。最后一点很重要,C/C+中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0 xF2,C,C+并不把它当成一个负数。,至此,我们学完了所有进制:10进制,8进制,16进制数的表达,23,
展开阅读全文