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