字面量是指从字面上即可直接识别该数据的类型和数据值的数据对象。它在程序的整个运行过程中其值不会发生变化。每种基本类型的数据都有字面量形式,它们在程序中都有相应的书写要求。
1.请观察下面程序中出现的整型字面量,并描述它们的组成和书写要求。
(1)在程序中标出字面量对象。
(2)这些字面量中有小数点吗?
○有 ○没有
(3)请描述整型字面量的书写要求。
(4)请写出5个正确的整型字面量。
_____________________________
(5)请写出5个错误的整型字面量。
_____________________________
眼下留神
●一个整型字面量其值在-2147483648~2147483947范围内,被视为int型字面量;一个整型字面量其值在-9223372036854775808~9223372036854775807范围内,被视为long long型字面量。
●在默认书写的整型字面量后缀以字母l(L)、ll(LL)、u(U)分别表示long型字面量、long long型字面量和unsigned型字面量,u(U)可以与l、ll联合使用,如lu、llu分别表示unsigned long和unsigned long long型字面量。
●字面量后缀字母的书写格式常用于函数的调用中,C语言要求调用函数时实参类型必须与形参类型相同,如果函数的形参是long型,则要求实参也为long型,此时若用345作实参就不行,而要用345l作实参。
●一个整型字面默认为int型字面量,如果超过int类型的表示范围,则试着当成unsigned int类型,如果还是超过范围,就依次视为long,unsiged long,long long,unsigned long long,直到合适的类型为止。
2.请运行下面的程序,观察程序中出现的实型字面量,并描述它们的组成和正确书写的格式要求。
(1)在程序中标出字面量对象。
(2)这些字面量中有小数点吗?
○有 ○没有
(3)小数点的一侧可以不写数字吗?
○可以 ○不可以
(4)有的字面量中出现了____字符,它相当于数学上的____记数法。
(5)请描述实型字面量的书写要求。
(6)请编译下面的程序,分析其出错的原因,然后描述书写实型字面量的注意事项。
①指出实型字面量书写错误的地方。
_____________________________
②请描述正确书写实型字面量的注意事项。
__________________________________________________________
眼下留神
●实型数在计算机程序中也称为浮点数(floating-point),用于表示两个整数之间的那些数,如1.761,-0.328,3.119等。浮点数采取了与整数完全不一样的机内存储方案,即把一个浮点数分成小数(也称为尾数或有效数)和指数两个部分分别存储。float型实数的机内存储方案如下图所示:
●实型字面量有十进制小数、指数和十六进制指数3种表示形式。十进制小数形式要求实型字面量中有且仅有一个小数点,且小数点两侧至少一边有数字,如6.,.315等;指数形式中e(E)的前后必须有数字,且指数必须是整数。十六进制指数形式为0x(0X)打头并以p(P)分隔尾数和2为底的指数,如0x2p3,其等价于16.0。
●不带任何后缀标志的实型字面量默认是double型。后缀以f(F)、l(L)可分别表示float和long double型字面量,如2.75f,0.336L。
●在PC机WinXP以上系统中float型可表示6个有效数字,double型可表示15个有效数字,long double可表示18个有效数字。
●任一区域(如0和1之间)的数是无穷的,计算机中的浮点数不能表示区域中的所有数。浮点数只是实际数的近似值,因此,浮点运算的结果也是一个近似值,只有我们接受其运算精度时,才采用浮点运算。
3.请观察下面程序中出现的字符型字面量,并描述它们的组成和正确书写格式。
(1)在程序中标出字面量对象。
(2)这些字符型字面量在书写时使用了什么作为定界符?
_____________________________
(3)请为字符字面量和字符串字面量下定义。
字符是_____________________________
字符串是_____________________________
(4)请描述字符型字面量的书写要求。
(5)请按书写要求写几个正确的字符型字面量。
字符是_____________________________
字符串是_____________________________
计算机中数的表示方法(延伸阅读)
眼下留神
●有些字符不能像字母、数字等字符那样能在程序中直接输入,它们中有的是“控制字符”,代表一种操作且不能在屏幕上显示,如换行符、退格符等;还有一些字符在C语言系统中有别的含义也不能直接输入作为普通字符,如单引号、双引号等。在C语言中这类字符必须用“转义字符”的特殊字符形式来表示。
●转义字符是以反斜线“\”开头的字符序列。如换行符不是按回车键来输入而是输入'\n',C语言编译程序会把反斜线后的字符解释为另一个字符,这里'\n'中的字符n就不是字母n而是换行符。转义字符表示的是一个字符。
常用的转义字符
●C语言编译器通过字面量的字面书写形式来识别它们的类型而不管其数学意义,如2e3的数据类型是实型而不是整型。
●在C语言中,字符串末尾会自动加上一个空字符作为结束符,其书写格式为'\0',在存储字符串时要同时存储字符串的结束符。
●字符串的长度是指组成字符串的字符的个数。计算字符串长度时不计定界符和结束符。
当在程序中需要多次用到一个字面量时,C语言中可以用一个标识符来代表这个字面量,这个代表字面量的标识符称为符号字面量。
4.阅读下面的程序,观察在程序中如何使用标识符来表示字面量,完成表中提出的问题。
(1)指出程序中使用的符号字面量及所代表的值。
_____________________________
(2)请写出定义符号字面量的一般格式。
_____________________________
(3)在程序中用标识符PR表示2500,请你写出相关的定义。
_____________________________
(4)如果要使用圆周率3.14159来进行计算,你认为程序中要作几处修改?
○1处 ○2处
(5)如果程序中有100个地方要使用圆周率,你是愿意直接使用圆周率的值,还是为它定义相应的符号字面量?谈谈你的看法。
__________________________________________________________
(6)使用符号字面量时的注意事项。
__________________________________________________________
(7)请说出在程序中使用符号字面量的好处。
_____________________________
日积月累
●字面量的书写规则
①不带小数点或指数的数值字面量就是整型字面量,它有十进制、八进制、十六进制3种形式。十进制形式:遵循数学上的书写要求,如128,-49,+356等。
八进制形式:由0开头后跟0~7中的数字组成的数字串,如010,0657,036等。
十六进制形式:由0x或0X开头后跟0~9、a~f或A~F中的数字组成的数字串,如0xac,0x78d6,0X101,0X6C6C等。
②实型字面量有十进制小数和指数两种形式,十进制小数形式中有且只有一个小数点,且小数点的左右至少一边有数字;书写指数形式字面量时,注意字母e(或E)前后必须有数字,且其后面的数必须为整数。
③字符字面量是用单引号(' ')括起的一个字符。转义字符例外,转义字符仍表示一个字符;字符串字面量是用双引号(" ")括起字符序列(字符串中的字符可以是转义字符)。
●定义符号字面量
①一般格式:#define 标识符 字面量
②注意事项:定义符号字面量的命令是预编译命令,放在源程序的最前面;标识符中的字母一般采用大写形式;命令行后没有分号,命令中各部分用空格分隔。
③符号字面量带来的好处是提高了程序的可读性,且便于程序的修改。