C语言中如何把字母当常量,C语言字符常量与字符串常量

字符常量:一个用单引号括起来的单个字符(或字符转义序列或三字母词)

实质(含义):是一个整形值。属于四大基本数据类型(分别是整型,浮点型,指针,聚合类型)中的整型(integers)。

如‘a',   '\n',   '??!',   '\24'

针对上面四个例子逐一讲解:

1. 第一个’a'似乎没什么好说的,严格满足定义。(有一点想说一下,'abc'到底算不算字符常量呐?在《C与指针》中说这种情况属于多字节字符常量,并不违反标准,但由于在不同环境下可能不一样,并不鼓励使用。我在VC上试了一下,含有'abc'的程序的确可以运行,不过它对应的整形数据等于’c'(即尾字母对应的整形数据)

2. 第二个’\n'牵扯到字符转义序列,转义序列由一个反斜杠\加上一或多个字符构成。

如\n,\t,\\,\?等。其详细含义此处不再赘述。那么‘\n'究竟代表什么呐?我准备在实践中检验一下

于是我进行了如下代码(并且把’\?'换为其他‘诸如此类单引号下是转义序列的字符常量)发现它竟然就是’?'对应的ASCII码值。其它的经检验也都相同。但是如果只是随意的如’\r'(引号内并非转义序列则不会得到与'r'相同的结果)。

#include#includeint main(void)

{

char i;

i = '\?';

printf("%d", i);

Sleep(10000);

return 0;

}

3. 第三个‘??!'牵扯到三字母词。三字母词就是几个字符的序列,合起来表示另一个字符。

如下

三字母词

对应字符

??/

\

??!

|

??)

]

??(

[

??>

}

??<

{

??=

#

??-

~

所以'??!'与'|'对应的ASCII码值相同

4. 第四个只需要知道在C语言中用”\+数字“如(\40)来表示相应八进制数代表的字符,用“\x+数字”来表示相应十六进制数代表的字符。在《C与指针》中讲转义序列时说

\ddd,其中三个d均是八进制数字,这个转义符表示的字符既是给定八进制数值代表字符。如\40对应十进制32,则其代表ASCII码值为三十二的字符即 空格。注意:' ',引号中间是一个空格也属于字符常量。

\xddd与上类似,只是将八进制转化为十六进制。如\x20对应十进制32,同样表示空格这个字符。                                                      注意:在C语言中,所有字符常量都作为整形量来处理(即字符型数据与整形数据可通用)如 char i;   i='a'-32;   printf("%c",i);则将输出’A'                                                                                                                                                                    或者printf("%d",i);则将输出65

或          int i;                                                                                                                                                                                                   i='a'-32;

printf("%c",i);将输出'A'                                                                                                                                                                       或者printf("%d",i);则将输出65

附:常用ASCII码值: 'a'~'z'    97~122

'A'~'Z'     65~90

'0'~'9'      48~57

字符串常量 :   由一个双引号括起来若干字符的序列(在这里若干可表示0或1或...)。

如"hello world","C language programming",   "a"   , "123.45",均合法。                                                                                     注意:1.字符串常量不能被赋值,同时字符串常量不能对值修改

2.字符串常量在内存中占若干字节(至少一个字符结束标志)占字节数等于字符串中字节数加一。在C语言中系统会在每个字符串的最后自动加一个'\0'(本身并不看作是字符串的一部分)作为字符串的结束标志。如''hello"在内存中占六个字节。

3.无字符串变量,如果想将一个字符串存放在变量中以便保存,必须使用字符数组。用数组中每一个元素存放一个字符。如char a[]="hello";

4.属于静态存储类,在整个程序运行中只存储一份。

进一步探讨字符串常量,联系字符串数组与指针

你可能感兴趣的:(C语言中如何把字母当常量)