我正在尝试printf一个显示温度表的字符串
printf("TABLE 24A (20\°C)");
度数符号是我定义为0xDF
的常量,因此字符串如下所示:"TABLE 24A (20\xDF C)"
由于\xDF
和C
之间的空格,这可行但看起来不正确。
如果我删除空格,编译器会发出警告十六进制转义序列超出范围。
如果我将字符串修改为"TABLE 24A (20\xDF\C)"
,我会得到正确的结果,但编译器会发出警告未知的转义序列:'\ C'
有没有办法摆脱警告,但却失去了两个角色之间的空间?
答案 0 :(得分:8)
您可以利用连续字符串文字自动连接的事实:
printf("**TABLE 24A (20\xDF" "C)**");
这可以防止解析器为转义序列消耗更多字符而不是你想要的。
您也可以将字符作为参数传入,并使用%c
格式说明符进行打印:
printf("**TABLE 24A (20%cC)**", '\xDF');
答案 1 :(得分:7)
\x
转义序列消耗尽可能多的相邻十六进制数字。 C
被解析为十六进制数字。
使用\x
,您可以组合两个相邻的字符串文字。
printf("**TABLE 24A (20\xDF""C)**");
或使用\unnnn
Unicode转义符,限制为四个十六进制字符。
printf("**TABLE 24A (20\u00DFC)**");
或八进制\nnn
:
printf("**TABLE 24A (20\337C)**");