c/c++语言开发共享转义序列在C中产​​生意外的输出

我是C编程语言的初学者,最近我研究了转义序列

n means newline b means backspace r means carriage-return 

当我在下面的程序中应用这些时,我就得到输出为hai ,任何人都可以解释一下,怎么样?

 main() { printf("nab"); printf("bsi"); printf("rha"); } 

    r实际上是回车符(它将光标移到行的开头)。

    你的程序输出一个新行( n ),然后是“ab”,然后退格( b )(在b上)“si”,所以你现在在屏幕上有“asi”。
    r将光标移动到行的开头,然后输出“ha”,在屏幕上留下“hai”。

    第一条指令将在新行上打印abn ):

     >ab 

    第二条指令在打印si之前会产生退格b ):

     >asi 

    然后最后一个将在打印之前返回回车符r ):

     >hai 

    首先printf将打印ab然后b将进行退格并打印si以便最终打印成为asi

    现在在最后r将光标移动到开头并打印ha将替换前两个字符并使最终字符串为haiha来自最后一个语句,而i来自之前的结果。)

    因为你在第一个n之后在同一行写了所有内容:

      printf( "nab" ); // -> ab on a new line 

    线路状态: ab

      printf( "bsi" ); 

    这意味着ab减去b因为退格,然后你将si添加到该行。

    线路状态: asi

    最后:

      printf( "rha" ); 

    意味着你回到行的开头写ha

    它导致了hai


    r回车 ,而不是换行

    不, 'r' 不是换行符, 'n'实际上是换行符。 恰好是许多现代系统使用'n'作为换行和回车,使其成为“换行符”。

    'r'回车符 ,它将光标返回到行的开头。

    b用于退格。 也就是说,它删除了刚才写的字符。
    r n是将光标返回到当前行中最左侧的位置。

    设z表示光标。
    声明之后。

     n abz 

    退格后。

     az 

    声明二后。

     asiz 

    回来后。

     zbi 

    声明三后

    haiz

    在你的代码中

    让我们一步一步:

     absiha 

    首先,处理退格。 请注意,即使它是“非擦除”,输出的下一个字符也会覆盖后退的字符:

     asiha 

    现在,回车意味着回到行的开头。 所以“ha”覆盖了“asi”中的“as”:

     hai 

    现在,光标当前位于i上,因此要输出的下一个字符将覆盖i。

    需要了解更多c/c++开发分享转义序列在C中产​​生意外的输出,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享转义序列在C中产​​生意外的输出相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979559.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐