【C语言语法】转义字符的作用 您所在的位置:网站首页 转义字符的用法和意义是什么 【C语言语法】转义字符的作用

【C语言语法】转义字符的作用

2024-06-10 09:24| 来源: 网络整理| 查看: 265

转义字符

   转义字符是一类特殊的字符

   有一些字符无法通过键盘输入(你在键盘上可能找不到对应的按键)或者在C语言的环境下可能产生歧义

   1.避免在某些环境下引起歧义

  如果你想要通过printf 打出双引号,是不能直接打的。比如:

printf("老师说:"1+1=2。" ");

   编译器会报错。

   双引号是字符串的定界符

   printf函数的第一个参数是一个字符串,在编译器的理解里第一个参数为“老师说:”,后面凭空多出现了字符,自然就报错了。

   所以为了打出双引号,我们就需要使用转义字符来实现:

printf("老师说:\"1+1=2。\" ");

 ① \" 表示一个双引号

  它的作用不只是在printf中

  比如你想用字符串常量给一个字符型数组赋值,而这个字符串常量中若包括了双引号,也需要用转义字符。

   例:

char a[20]="你在\"想peach\"。";

 ②\\ 表示一个反斜杠,避免它被解释为转义序列符

  例   6\n=?  这句话直接用printf打,\n会被解释为换行符

  ③ \?表示一个问号(避免解释为三字母词)

  ④  \'  表示一个单引号

   如果你想给一个字符型变量赋值为单引号,若这么写 :  char x=‘ ‘’;

   编译器会报错,只要加个\就不会引起误解了。

 

   2.用于输出一些设备控制符,比如回车,换行,退格等

   \b:退格符,使当前行的活跃位置(即光标)后退一个位置。

   \n:换行符,使活跃位置跳到下一行的开端。

    \r:回车符,使活跃位置返回当前行的开端。

    \t:水平制表符,使活跃位置移动若干个位置(通常是8个)。可以理解为八个空格

    \a:警告字符

    ……

    3.用于表示ascii码

    有两种形式:

    ①\ddd     ddd表示一个八进制数 例:

printf("\141\142\143\144\145");

  输出结果为abcde

  因为八进制的141实际数值为十进制的97,即对应了字母a的ascii码值

   值得一提的是换行符\012 也可以写作\12

   也就是说打头的0其实是可以省略的

   ②\xddd   ddd表示一个16进制数 例:

   

printf("1\xa\x30");

  输出结果为

1

0

  因为十六进制的30的实际数值是十进制的48,即对应了字符0的ascii码值

  而十六进制的\xa(a是十六进制的10)的实际数值是十进制的10,对应换行符

  一个有趣的现象:

printf("1\x300shi");

 输出结果为1

printf("1\x30shi");

 输出结果为10shi,也就是正常输出了

 很有可能因为没有\x300(768)对应的ascii码值而导致输出出现了问题

 根据这个原理,还有一种可能出现的问题:

printf("a\xaa");

 输出结果为a

 我本来是想输出

a

a

 因为\xa是换行符,但是显然编译器把aa当作了我输入的十六进制数,而aa太大了因此没有输出成功

 也就是说在用十六进制表示ascii码时要考虑到a~f是会被理解为十六进制数的一部分的 

 

 4.注意点

  ①正如我前文所提到的,有些字符有不止一种的转义字符表达方式

 如换行符即可以写作\n,也可以写作\012(\12),还可以记作\xa(\x0a或\x00a);

  但是我们最好使用\n,因为它通俗易懂,便于记忆

   ②转义字符应该被看作一个字符

   ③若\和它后面的字符不构成转义字符,则\被看作斜杠

   例外:

   \9 表示9;

    我猜想是因为\后面直接跟一个数字会被编译器理解为用八进制数表示ascii码值

    但是八进制数里没有9。。。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有