- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C 常量
类似于1234 的整数常量属于int 类型。long 类型的常量以字母l 或L 结尾,如123456789L。如果一个整数太大以至于无法用int 类型表示时,也将被当作long 类型处
理。无符号常量以字母u或U结尾。后缀ul或UL表明是unsigned long类型。
浮点数常量中包含一个小数点(如123.4)或一个指数(如1e-2),也可以两者都有。 没有后缀的浮点数常量为double 类型。后缀f 或F 表示float 类型,而后缀l 或L 则表示long double类型。
整型数除了用十进制表示外,还可以用八进制或十六进制表示。带前缀0 的整型常量表示它为八进制形式;前缀为0x或0X,则表示它为十六进制形式。例如,十进制数31 可以写
成八进制形式037,也可以写成十六进制形式0x1f或0X1F。八进制与十六进制的常量也可以使用后缀L 表示long 类型,使用后缀U 表示unsigned 类型。例如,0XFUL 是一个unsigned long类型(无符号长整型)的常量,其值等于十进制数15。
一个字符常量是一个整数,书写时将一个字符括在单引号中,如,x。字符在机器字符 集中的数值就是字符常量的值。例如,在ASCII 字符集中,字符0的值为48,它与数值0 没有关系。如果用字符0代替这个与具体字符集有关的值(比如48),那么,程序就无需关
心该字符对应的具体值,增加了程序的易读性。字符常量一般用来与其它字符进行比较,但也可以像其它整数一样参与数值运算,
某些字符可以通过转义字符序列(例如,换行符\n)表示为字符和字符串常量。转义字符序列看起来像两个字符,但只表示一个字符。另外,我们可以用
\ooo
表示任意的字节大小的位模式。其中,ooo 代表1~3 个八进制数字(0…7)。这种位模式还
可以用
\xhh
表示,其中,hh 是一个或多个十六进制数字(0…9,a…f,A…F)。因此,我们可以按照下
列 形式书写语句:
#define VTAB \013 /* ASCII vertical tab */ #define BELL \007 /* ASCII bell character */ 上述语句也可以用十六进制的形式书写为:
#define VTAB \xb /* ASCII vertical tab */
#define BELL \x7 /* ASCII bell character */ ANSI C语言中的全部转义字符序列如下所示:
\a 响铃符\\ 反斜杠
\b 回退符\? 问号
\f 换页符\ 单引号
\n 换行符\ 双引号
\r 回车符\ooo 八进制数
\t 横向制表符\xhh 十六进制数
\v 纵向制表符
字符常量\0表示值为0的字符,也就是空字符(null)。我们通常用\0的形式代替0,
以强调某些表达式的字符属性,但其数字值为0。
常量表达式是仅仅只包含常量的表达式。这种表达式在编译时求值,而不在运行时求值。它可以出现在常量可以出现的任何位置,例如:
#define MAXLINE 1000 char line[MAXLINE+1]; 或
#define LEAP 1 /* in leap years */
int days[31+28+LEAP+31+30+31+30+31+31+30+31+30+31];
字符串常量也叫字符串字面值,是用双引号括起来的0 个或多个字符组成的字符序列。例如:
I am a string
或
/* 空字符串*/
都是字符串。双引号不是字符串的一部分,它只用于限定字符串。字符常量中使用的转义字符序列同样也可以用在字符串中。在字符串中使用\表示双引号字符。编译时可以将多个 字
符串常量连接起来,例如,下列形式:
hello, world
等价于
hello, world
字符串常量的连接为将较长的字符串分散在若干个源文件行中提供了支持。
从技术角度看,字符串常量就是字符数组。字符串的内部表示使用一个空字符\0作为 串的结尾,因此。存储字符串的物理存储单元数比括在双引号中的字符数多一个。这种表示 方法也说明,C语言对字符串的长度没有限制,但程序必须扫描完整个字符串后才能确定字符
串的长度。标准库函数strlen(s)可以返回字符串参数s的长度,但长度不包括末尾的
\0。
下面是我们设计的strlen函数的一个版本:
/* strlen: return length of s */ int strlen(char s[])
{
int i;
while (s[i] != \0)
++i;
return i;
}
标准头文件string.h中声明了strlen和其它字符串函数。
我们应该搞清楚字符常量与仅包含一个字符的字符串之间的区别:x与x
文档评论(0)