C语言字符常量与字符串常量

C语言字符常量与字符串常量字符常量:一个用单引号括起来的单个字符(或字符转义序列或三字母词)实质(含义):是一个整形值。属于四大基本数据类型(分别是整型,浮点型,指针,聚合类型)中的整型(integers)。如‘a’,’\n’,’??!’,’\24’针对上面四个例子逐一讲解:1.第一个’a’似乎没什么好说的,严格满足定义。(有一点想说一下,’abc’到底算不算…

C语言字符常量与字符串常量

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

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

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

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

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

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

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

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

#include<stdio.h>
#include<Windows.h>
int 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语言字符常量与字符串常量分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/29441.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注