C 如何在printf中检测转义序列?

C 如何在printf中检测转义序列?,c,escaping,C,Escaping,我在试验基本的c程序,写了一个这样的程序 #include <stdio.h> int main() { printf("hello 0x0a");//0x0a is hex value for \n return 0; } #包括 int main() { printf(“hello 0x0a”);//0x0a是的十六进制值\n 返回0; } 它打印“hello 0x0a” 有没有一种方法可以在printf中以十进制或十六进制值的形式给出转义序列?有一种方法-但是f

我在试验基本的c程序,写了一个这样的程序

#include <stdio.h>
int main()
{
   printf("hello 0x0a");//0x0a is hex value for \n
   return 0;
}
#包括
int main()
{
printf(“hello 0x0a”);//0x0a是的十六进制值\n
返回0;
}
它打印“hello 0x0a”


有没有一种方法可以在printf中以十进制或十六进制值的形式给出转义序列?

有一种方法-但是fhis实际上不是printf的特性,而是该语言的一部分

C字符串文本可以包含将由编译器(而不是运行时由printf)计算的字符串

以十六进制书写的换行符的正确转义顺序为
\x0a
(或
\x0a
,由您自行决定):


有一种方法——但fhis实际上不是printf的特征,而是语言的一部分

C字符串文本可以包含将由编译器(而不是运行时由printf)计算的字符串

以十六进制书写的换行符的正确转义顺序为
\x0a
(或
\x0a
,由您自行决定):


是,在ASCII中使用其数值0x0a打印换行符

 #include <stdio.h>

  int main() 
  {
     printf("Hello,%cworld!", 0x0a);
  }
#包括
int main()
{
printf(“你好,%cworld!”,0x0a);
}

同样退格值0x08,水平选项卡0x09。参考链接。

是,使用ASCII格式的数值0x0a打印换行符

 #include <stdio.h>

  int main() 
  {
     printf("Hello,%cworld!", 0x0a);
  }
#包括
int main()
{
printf(“你好,%cworld!”,0x0a);
}

同样退格值0x08,水平选项卡0x09。参考链接。

那么0x0a变成\x0a了?为什么不使用\0x0a?因为
\0x0a
不是有效的转义序列
\0
可能是八进制数的转义序列的开始(
\nnn
,在我的答案中引用的表中),但解析器在读取
x
时会停止将其解释为转义序列。我尝试使用十进制的\10,它不会解释它?否。请检查。有13个有效的转义序列,其中一个用于十六进制,一个用于八进制常量。十进制值没有转义序列。所以十进制中有转义序列,但由于编译器的限制,我们不能使用它们的十进制值。这是正确的理解方式吗?wiki页面也没有提到转义序列的八进制值。所以0x0a变成了\x0a?为什么不使用\0x0a?因为
\0x0a
不是有效的转义序列
\0
可能是八进制数的转义序列的开始(
\nnn
,在我的答案中引用的表中),但解析器在读取
x
时会停止将其解释为转义序列。我尝试使用十进制的\10,它不会解释它?否。请检查。有13个有效的转义序列,其中一个用于十六进制,一个用于八进制常量。十进制值没有转义序列。所以十进制中有转义序列,但由于编译器的限制,我们不能使用它们的十进制值。这是正确的理解方式吗?维基页面也没有提到转义序列的八进制值。