你用什么字母给一个恒定的占位符?

时间:2013-09-09 11:43:49

标签: c

我在预处理器中使用了它

#define SQMETERS_PR_SEC 2 

这是主要功能

printf(" to mow your lawn with a speed of %c.\n\n", SQMETERS_PR_SEC);

但是%c只返回一个空格。

您使用哪个字母作为常量占位符?

3 个答案:

答案 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);