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

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

`void main(){

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

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

3条回答 默认 最新

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

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

    点赞 评论 复制链接分享
  • xiongxxx xiongxxx 2017-03-02 02:40

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

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

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

    点赞 1 评论 复制链接分享
  • fight_in_dl 战在春秋 2017-03-02 02:43

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

    点赞 评论 复制链接分享

相关推荐