我在预处理器中使用了它
#define SQMETERS_PR_SEC 2
这是主要功能
printf(" to mow your lawn with a speed of %c.\n\n", SQMETERS_PR_SEC);
但是%c只返回一个空格。
您使用哪个字母作为常量占位符?
答案 0 :(得分:6)
这取决于,在这种情况下,你的常数是一个小整数,所以你用%d
打印它。
然而,字符串常量将打印%s
等。无论类型如何,打印常量都没有通用技巧。
原因在于您的“常量”实际上是一个宏,这意味着在其位置SQMETERS_PR_SEC
以外的任何位置都会将文本替换为2
。就是这样 - 没有花哨的解释或任何东西,它是文本的复制/粘贴。
答案 1 :(得分:3)
由于定义只是替换了代码,并且您说您希望将2
解释为char
解释为printf()
函数,而'2'
与%c
不相似,只需在#define SQMETERS_PR_SEC '2'
处放置索引2的ASCII码的转义序列。
如果定义是:
{{1}}
然后就是正确的。
答案 2 :(得分:3)
你的问题是,%c
会打印一个字符,并给出它的ASCII值。
现在2
是控制字符"文本开头"的ASCII值,不可打印,因此printf
将输出占位符(例如空白)空间)。
如果要打印数字,请改用%d
:
printf(" do foo bar at %d kul\n", 2);