非典型废言
2017-03-02 01:54
采纳率: 66.7%
浏览 2.0k
已采纳

C语言字符串中的转义'\'的问题

`void main(){

char *s="\ta\018bc";
for(;*s!='\0';s++){
    printf("%c",*s);
    printf("*\n");
}
    }``

这个程序输出的结果是有6个*    
'\01'   
为什么会被认为是一个字符 而不是 '\0'   和  '1’
两个字符
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dxysmd 2017-03-02 02:33
    已采纳

    https://zhidao.baidu.com/question/2119310963719467387.html 这里可以解决你的问题 你看看 希望帮到你

    点赞 打赏 评论
  • xiongxxx 2017-03-02 02:40

    将*s="\ta\018bc"改成*s="\ta\017bc"后,系统认为是\017而不是\01和7,

    应该是因为编译系统的识别策略,从前向后挨个字符识别,要求认为尽可能长地将 \ 后的字符看成一个整体,只要是能够当成一个整体的就尽量当作一个

    整体,确实无法认为是一个整体才拆分。

    点赞 打赏 评论
  • 战在春秋 2017-03-02 02:43

    \nnn
    表示其后为1至3位(最多3位)八进制数,
    如果遇到不是八进制数,如题中的'8'(八进制数范围为0-7),则终止转义。

    点赞 打赏 评论

相关推荐 更多相似问题