转义字符

来源:互联网 发布:nginx引入多个端口 编辑:程序博客网 时间:2024/06/05 17:35

C语言中的数据表示总体分为变量和常量,其中常量又包括实型、整型和字符型,字符型常量中又细分为普通字符、字符串常量和转义字符,转义字符是这次的主题。见下图数据表示分布图。

这里写图片描述

转义字符,经常用来表示常见的那些无法显示的控制字符,如
\n——换行、\t——制表符等,由于程序不能用一个一般形式的字符来表示这些特殊字符,就采用这种转义字符来表示。

转义字符的内容在C语言基础里就已经有了详细的讲解,我之所以单独拎出来讲,是因为我碰见了下面的题目:

以下程序段的输出结果是:

char s[]=”\\123456\123456\t”;printf(“%d\n”,strlen(s));

A.12
B.13
C.17
D.以上都不对

计算这个字符串里的有效字符个数,想当然地,我的答案是16,结果是都没有这个答案…我想的是 ‘\’ ‘\’ ‘1’ ‘2’ ‘3’ ‘4’ ‘5’ ‘6’ ‘\’ ‘1’ ‘2’ ‘3’ ‘4’ ‘5’ ‘6’ ‘\t’ , 正确答案是………….给正在看博客的你几秒反应时间,你的答案是什么呢?你确定吗??

好吧,是12个—— ‘\’ ‘1’ ‘2’ ‘3’ ‘4’ ‘5’ ‘6’ ‘\123’ ‘4’ ‘5’ ‘6’ ‘\t’。
第一个’\’:\后面再接一个\,输出的就是\。同理的还有’\”、’\”’、’\?’。

第二个’\123’:\后面可以接1~3个八进制数,来输出与该八进制码对应的字符,同理还有\后面接十六进制数字,输出的自然是与该十六进制码对应的字符。

以下是验证代码:

int main(){    char a = '\n';//   换行    char b = '\\';//    结果为  \     char c = '\\n';//发生截断,最后的n覆盖了中间的\,结果为n    char d = '\101';//八进制数101相当于十进制数65,对应字符为'A'    char e = '\x41';//十六进制数41相当于十进制数65,对应字符为'A'    printf("%c %c %c %c %c\n",a,b,c,d,e);    return 0;}

运行结果:

这里写图片描述

这道题让我发现,知识越学越多,需要注意的细节也越来越多,并不是什么都学了就一定好,一定要注意抠细节。共勉。

原创粉丝点击