您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > c语言基础教程_第二章_常量变量和类型转换,版
第二章常量变量和类型转换2.1.1数字常量数字常量包括整型常量和浮点型常量,浮点型常量又称实数。1.整型常量C语言中整型常量有三种不同的表示形式:十进制、八进制和十六进制。(1)十进制。这是一种常用的表示形式,它将直接给出数字,即在数字前不加任何前缀。例如,12,259,703等为十进制表示。(2)八进制。表示八进制数字时,要加前缀。,即在数字前面加……例如,017,0532.0416等为八进制表示。其中,017换成十进制数为15(3)十六进制。表示十六进制数字时,要加前缀Ox或OX,即在数字前面加。、或。X。例如,Ox17,Oxae5,OX4t等为十六进制表示。其中,0x17换成+进制数为23整型数又分为长整数、短整数和无符号整数。长整型数在表示上与其他整型数的区别是加后缀L或1,所谓后缀是指在数字后面加写的字母。例如,12345L,Qx78abfl)等。无符号数的后缀是U或u。例如,7643U,04216u等。[例2.妇不同进制数的表示及相互转揍。main){ptitxtf(%d\t}x\t%o\n,2929,29);ptintf(%d\t}x\t00/ao\n,025,025,025);ptintf(0od\t0ox\t0/uo\n,Oxla,Ox1a,Oxla);printf(0ou\t%ld\n,47675u,742611);}请分析该程序执行后的输出结果。2.浮点型常量浮点型常量又称为实型常量。它有两种表示形式:十进制小数形式和指数形式。(1)十进制小数形式。它是由数字和小数点组成的(必须有小数点)。一般数值不是很大或很小的数采用小数形式表示,这种形式方便易读。例如,。。567,5fi7.0,.5fi7,567.,。。。等都是合法的小数表示形式。(2)指数表示形式。指数表示法又称科学记数法。该表示形式中,须有字母e或E,且在该字母之前必须有数字,在该字母之后的指数必须为整数。对于过大或过小的数值采用这种表示方法。这种表示方法简明清晰。具体格式如下所示:(整数部分).(小数部分)(指数部分)字母e左边部分可以是(整数部分).(小数部分),也可以只有(整数都分》不含小数点,或者只有小数部分》前面含有小数点,指数部分)是整数,可以是正的,也可以是负的。例如,下列浮点数都是正确的:1234e3,1234E一2,12.34e一3,。1234E5,Oe0等。而下面的浮点数表示是错误的:e2,3.5e1.5,。e5,e等。其出错原因是:e2在字母e前面没有数字,3.5e1.5是字母e后面指数为小数,。‘在字母e前面只有小数点(.)而没有数字;e是在字母e前无数字。另外,关于负的浮点数的表示,例如,-5.0,-3.2e5等,一般应归为表达式,因为负号(一)在C语言中是一种单目运算符。但是,有些书上,也认为是常量。关于负的整数也是如此。本书认为负数为表达式。例2浮点型常量的输出。main(){printf(00/nf\t%e\t%g\n,12e3,12.3,12.3),printf(00/uf\t}e\t}g\n,12.3456,12.3456,12.3456)printf(%d\t%.2f\tpOfV,,12.3.I2.345,123);分析上述程序的输出结果,并上机验证。2.1.2字符常t和字符串常量字符常量由单引号括起的一个字符组成的。例如,‘B’,‘d’,'9’,'\n’,‘\0,’,’\”等都是字符常量,单引号是字符常量的定界符。单引号符可由}‘\”表示,即使用了转义序列的形式。因此,在字符常量中,对一般可打印字符采用直接写出字符符号的方法,而对不可打印字符采用转义序列的方法。在C语言中,字符常量具有数值,该值便是该字符的ASCII码值。因此,一个字符常量可以像整数一徉的参与一些运算,如加法、减法等运算。例如,‘d’一1表示字符d的ASCII码值减去1,其差值为99。又例如。'C’一’A'+‘a’表示将字符C的ASCII码值减去字符A的ASCII码值,再加上字符a的ASCII码值,其结果为67,而此值正是大写字母C的ASC'II值。[例2.3〕字符常量的输出。mam()printfi%c,d\n;,67,'m');printf(%e,%c,%c/n,’a’,\r,,h'.);prmtf(%e,%c\n”,'a',’r’,'b');Printlf(%C%c”,‘\n’,\007’。;下面分析该程序的输出结果,进一步搞清一些转义序列表示的字符的使用方法。该程序中有4个printf()函数的语句,依次执行输出如下:第一个printf)函数的语句输出为:C,109因为67所对应的是大写字母C的ASCII码值,因此,按%。格式输出67时,则为字母C。又因为小写字母m的ASCII码值为109,因此,按%d格式输出字母m的ASCII码值应是109。第二个printf)j}数的语句输出为:.a,b因为按%C输出字符常量‘a’时,屏幕应显示a,然后控制串中有一般字符逗号(,)则照样输出,这时显示为a,。接着,再按异长输出'\b',这是一个转义序列表示的字符,即退格符,在输出这个字符后,屏幕上显示为a,接着又输出控制申中的第二个逗号,这时显示为a,。再按%C输出字符常量’b『,因此,屏幕上应显示出a,h,由于控制串中最后一个字符是’场},所以,光标被移到下一行第一个字符的位置。第三个printf()函数的语句输出为:.h因为按%c输出字符常觉’a’,又输出控制串中第一个逗号后,显示为a,。再按%。输出字符常量\.r'后,光标被移到该行的首列,即字符a处,这时输出控制串中第二个逗号时,将字符a改为逗号(,)。接着,按灯c输出字符常量}b{时。屏幕上显示为。b。再将光标移至下行首列。第四个printf()函数的语句输出为:两声鸣铃因为按%c。输出字符常量’\n’。则是机器的一声鸣铃,再按%:输出字符常量'\.007',则机器又一次鸣铃。这时,光标仍停留在该行的首列,即光标并没有移动。2.字符串常量字符串常量是用一对双引号括起来的字符序列。双引号(””)作为字符串常量的定界符,因此,在字符串中表示双引号应使用转义序列’\“’来表示。关于字符串与字符常徽的区别在前面已经讲述过了,这里不再重复。关于字符和字符串这两种常量的区别还可以作下述描述:早符实际上是一个整型数,而字符串实质上是地址值。这句话前部分通过学习字符常量可以理解,字符的整型数就是该字符的ASCII码值。而后部分在学完“指针”一章后便可理解。字符常量是用来给char型变量赋值的,而字符串常量却是用来给。har型数组赋值的,因此,两者是不相同的。「例2.4)字符串常量的输出。main(){printf(%s,%‘\n}Ok!”,”\good\“”printf(x\ty\b\bzuua\n);printf(abc\tdef\rmn\tpq\n).}分析该程序输出结果如下:第一个printf()l}数语句输出结果为:ok!,goo”因为按%s输出字符串常量”ok!,则显示出ok,接着,控制串中的逗号被输出。然后,又按%s输出另一个字符串常\good`“,这里有转义序列表示的字符’\“’。即双引号,这个字符串被输出显示为”good。然后,光标移至下行首列。第二个printf)函数语句输出结果为:xuuuuiia因为该语句是在屏幕上显示printf)函数中控制串中所指定的字符串常量。该字符串常量中有可打印字符,又有不可打印字符’\t,'u’和’\b’,它们分别是水平制表符、空格符和退格符。水平制表符的作用是用来向右“跳格气每次跳到下一个“输出位置”,一般系统中指定一个“物出区”占8列,第一个输出区占1至8列,下一个输出区将从第9列开始,直到lfi列,依此类推。空格符是将光标右移一个字符,退格符是将光标移到所在字符的前一个字符处。弄清这三个常用的转义序列表示的字符的功能后,便不难分析该字符串常量的输出结果。首先,在该行首列显示字符、,接着,光标右移至第9列(首列为第一列)精出显示字符Y,然后输出两个‘\b’字符,光标向左退两列,即在第s列处,这时输出字符Z,再输出空格符,将Y变为空格符,又输出一个空格符后,输出字符a,于是屏幕上显示上述结果。第三个printf()函数语句输出结果为:mna,}uuuupqf因为先输出ahc字符后,再输出'\t',这时光标移至第9列。接着,输出def,光标在第12列。当输出字符’\r’后,光标将被移至该行的首列。即a字符下,再输出mn时,将a变为m,将b变为n,又恰出’\t’,则将c变为空格符,光标移至第9列字符d下,输出p时,将d变P下,输出q时,将e变q,f没有被改变,仍然存留,光标被移至下行的首列,因为最后有一个’\n’。2.1.3符号常量C语言中,常常用一个标识符来代表一个常量,称为符号常量。符号常量在使用之前要先定义,定义格式如下:#define符号常量名(常量)其中,符号常量名)用标识符,习惯上用大写字母,常量可以是数字常量,也可以是字符常量。这实际上是一个宏定义命令,通过这个宏定义将常量定义为一个符号常量。在C语言程序中用符号常量代替常量,在编译时首先将符号常量被所定义的常量替换后才进行编译,这个过程称为宏替换。采用符号常量具有下述几个好处;(1)书写简单不易出错。使用符号常量可以将复杂的常量定义为简明的符号常量,使得书写简单,而且不易出错。例如,#deiinePI3.14159265这里,符号常量PI被定义为3.14159265,在程序中书写PI,显然比书写3.14159265要简明。(2)修改程序方便。采用符号常量会给修改程序带来方便。例如,在一个程序中使用了某个符号常量共10次,根据需要要对这一常量值进行修改,这时只需在宏定义命令中对定义的常量值进行一次修改。否则,要在程序中出现这一常量的10处都进行修改,这不仅带来一定麻烦,同时又易于出错。(3)增加可读性和移植性。由于符号常量通常具有明确的含义,因此,一见符号常量便可知道所表示的常量意义,例如,在前面的宏定义命令中,很明显PI表示圆周率,即二。所以可读性好。使用符号常量可将程序中影响环境系统的参数,如字长等,定义在一个可被包含的文件中,在不同的环境系统下,通过修改包含文件中符号常量的定义值来达到兼容的目的,于是可提高程序的移植性。C语言中,符号常量习惯用大写字母表示,而一般变量用小写字母,以示区别。[例2.5]符号常量的使用。#definePI3.141592fi5#defineR3main(){doublecircumference,area;circumference=2.0*PI}R;area=PI,R*R;printfCcircumference=llf,are。一%if\n,circumference,area);)执行该程序输出结果如下:Circumference=18.84955fi,area-28.2743342.2.1变量的名字C语言中,要求对程序中所有的变量都须先定义,后使用.定义或说明一个变量时,要给出该变量的名字。变量名字的起法同前面讲过的标识祠污。变量名一般用小写字母,也可以用大写字母或大写小写字母混用。给变量起名时应尽量考虑勤在。名字中体现出该变量的含义或使用目的,以便提高可读性。变量名不要同系统的关键字相同,变量名的长度按标识符的规定,有些微机系统只识别前8个字符,多余的不能被识别。本教程中的一些例子,为了简明,变量名只用了一个字符,而在实际应用程序中的变量名还应能做到见名知意为好。例如,下列的变量名都反映了一定的含义,它们是合法的变量名:taunt,size_of_number,sutra,area等。在实际程序中,如果使用了没有被定义或说明的变量名时,在编译中会出现报错信息。这样可以保证程序中变量名使用正确,从而避免了用户将变量名写错。2.2.2变量的类型2.2.2变量的类型在定义或说明变量时,除了指出该变量的名字外,还要指出该变量的类型。每一个变量被指定为一个确定的类型,编译时系统便可为该变量分配相应的内存单元,内存单元的分配
本文标题:c语言基础教程_第二章_常量变量和类型转换,版
链接地址:https://www.777doc.com/doc-2907899 .html