#include <stdio.h>
void main()
{
printf("ab");
printf("bsi");
printf("rha");
}
此代码在 GCC 4.8 编译器上给出"ha"的输出
#include <stdio.h>
void main()
{
printf("ab");
printf("bsi");
printf("rha");
printf("n");
}
此代码在 GCC 4.8 编译器上给出 "hai" 的输出
现在的问题是,为什么输出从"ha"更改为"hai"只是在添加语句printf(""(时;最后(根据我的说法(由于前面的行而不会影响代码。
当程序结束时,shell 会从光标上次所在的任何位置开始写入提示。所以在第一种情况下,rha
之后,光标位于i
上。shell 将使用提示的第一个字符覆盖i
。
在第二种情况下,在末尾输出一个n
,将光标移动到下一行,shell 将在其中写入其提示。
首先,您需要了解空格字符:
- :: 将光标移动到下一行。
- \b :: 它将光标移回控制台左侧一个字符。只是简单的退格一个字符。
- \r :: Carrage Returns.It 将光标移动到同一行的最右侧。
所以 printf 语句的结果是::1.打印"ab",光标位于行尾。2. 将光标向后移动一个空格 (\b( 后打印"asi",光标位于行尾。3.打印"hai",光标位于ha之后,就在i下方。
所以,输出 :: hai
在第一种情况下,由于光标,您无法看到"i",而在第二种情况下,由于换行符,您可以看到它
如果你编译第一个代码,在 i 的位置,有光标,所以你看不到 i。在第二个代码中,光标位于新行中,并且不覆盖任何字符。