include<stdio.h> main(){ char *s="\ta\018bc"; for(;*s!='\0';s++) printf("*"); } 为什么输出6个星号,为什么不能把0看做一个字符要把01看做一个字符
C 里面合法的转义字符: \ 反斜线 ? 问号 ' 单引号 " 双引号 a alert b 退格符 e ESC 符(这个不是标准,是 GNU C 的扩展) f feed,用于跳到下一页,现在一般不用 n 换行符 r 回车符 t 横向制表符 v 纵向制表符 o, oo, ooo 一个 8 进制数代表的 ascii 字符,其中的 o 只能是 0~7 xh, xhh, xhhh, … 一个 16 进制数代表的 ascii 字符,其中的 h 只能是 0~9,a~z,A~Z 对于最后 2 个,遵循最长匹配 所以,对于给出的字串 018,匹配到了 01 表示数字 1 代表的 ascii 字符。
C 里面合法的转义字符:
\ 反斜线
? 问号
' 单引号
" 双引号
a alert
b 退格符
e ESC 符(这个不是标准,是 GNU C 的扩展)
f feed,用于跳到下一页,现在一般不用
n 换行符
r 回车符
t 横向制表符
v 纵向制表符
o, oo, ooo 一个 8 进制数代表的 ascii 字符,其中的 o 只能是 0~7
xh, xhh, xhhh, … 一个 16 进制数代表的 ascii 字符,其中的 h 只能是 0~9,a~z,A~Z
对于最后 2 个,遵循最长匹配
所以,对于给出的字串 018,匹配到了 01 表示数字 1 代表的 ascii 字符。