【C语言语法】转义字符的作用 | 您所在的位置:网站首页 › 转义字符的用法和意义是什么 › 【C语言语法】转义字符的作用 |
转义字符 转义字符是一类特殊的字符 有一些字符无法通过键盘输入(你在键盘上可能找不到对应的按键)或者在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 实验室设备网 版权所有 |