C 未知逃逸序列

C 未知逃逸序列,c,C,我试图打印一个显示温度表的字符串 printf(“表24A(20摄氏度)” 度符号是一个常量,我定义为0xDF,因此字符串如下所示:“表24A(20\xDF C)” 这可以工作,但看起来不正确,因为\xDF和C之间有空格。 如果删除空格,编译器将发出警告十六进制转义序列超出范围 如果我将字符串修改为“TABLE 24A(20\xDF\C)”我会得到正确的结果,但编译器会发出警告“未知转义序列:'\C' 有没有一种方法可以消除警告,但会丢失两个字符之间的空格?您可以利用以下事实:连续字符串文本会自

我试图打印一个显示温度表的字符串
printf(“表24A(20摄氏度)”

度符号是一个常量,我定义为
0xDF
,因此字符串如下所示:
“表24A(20\xDF C)”

这可以工作,但看起来不正确,因为
\xDF
C
之间有空格。 如果删除空格,编译器将发出警告十六进制转义序列超出范围

如果我将字符串修改为
“TABLE 24A(20\xDF\C)”
我会得到正确的结果,但编译器会发出警告“未知转义序列:'\C'


有没有一种方法可以消除警告,但会丢失两个字符之间的空格?

您可以利用以下事实:连续字符串文本会自动连接:

 printf("**TABLE 24A (20\xDF" "C)**");
这可以防止解析器为转义序列使用比您想要的更多的字符

您还可以将字符作为参数传入,并使用
%c
格式说明符打印它:

printf("**TABLE 24A (20%cC)**", '\xDF');

\x
转义序列使用尽可能多的相邻十六进制数字。正在将
C
解析为十六进制数字

使用
\x
,可以组合两个相邻的字符串文本

printf("**TABLE 24A (20\xDF""C)**");
或者使用
\unnn
Unicode转义,该转义限制为四个十六进制字符

printf("**TABLE 24A (20\u00DFC)**");
或八进制
\nnn

printf("**TABLE 24A (20\337C)**");

关于
\u00DFC
?您是否尝试过将%c用于\xDF?unicode选项在我的c编译器中不起作用。它给出以下警告:通用字符名称仅在C++和C99中都有效,八进制和组合两个相邻字符串文字工作良好,谢谢您的帮助!问候理查德