以下C程序的输出结果如何?

时间:2017-09-07 19:41:24

标签: c escaping backslash

输出会是什么?  我对\\感到困惑。它是如何工作的?

#include <stdio.h>
void main(){
    printf("\\nab");
    printf("\\bsi");
    printf("\\rha");
}

3 个答案:

答案 0 :(得分:1)

输出为\nag\bsi\rha。 字符串"\\"会转换为文字"\"

这是因为\n表示一个新行,并且单个字符\还有其他一些用途。如果它不能以这种方式工作,则无法打印文字\n

答案 1 :(得分:1)

答案是:

\nab\bsi\rha

1 - 三个文本一起打印,因为如果您使用

而使用printf而没有转义字符\n
...
printf("\\nab\n");
printf("\\bsi\n");
printf("\\rha\n");
...

你会得到

\nab
\bsi
\rha

在第一次打印中,您正在编写\n,这意味着一个新行,但您要声明两个斜线,表示打印&#39;按原样#39;单个斜杠(在C中打印斜杠,你必须使用\\(两个),因为单个斜杠假装用于特殊的转义字符,如\ n)。

尝试用它来执行您的原始文件以查看主要区别:

#include <stdio.h>

void main()
{
  printf("\nab\n");     /* Note that I am using a escape character \n to make a new line after each print */
  printf("\bsi\n");
  printf("\rha\n");
}

答案 2 :(得分:1)

基本上,如果在特殊字符之前使用此R_new = R * S,则称为转义文字。这样做,删除它前面的特殊字符的功能。 例如:如果您想在输出中打印此行:\。您可以将其写为:Hi this, ", is a quote symbol

对于转义序列(例如\ n \ t \ b),要从中删除特殊字符printf("Hi this, \", is a quote");,则需要转义字面值。