0

我在预处理器中使用了这个

#define SQMETERS_PR_SEC 2 

这在主要功能中

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

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

您使用什么字母作为常量占位符?

4

3 回答 3

6

这取决于,在这种情况下,您的常量是一个小整数,因此您可以使用%d.

然而,字符串常量会用%s等打印。无论类型如何,打印常量都没有通用技巧。

这样做的原因是您的“常量”实际上是一个宏,这意味着在其位置之外的任何点SQMETERS_PR_SEC都会在文本上替换为2. 就是这样 - 没有花哨的解释或任何东西,它是文本复制/粘贴。

于 2013-09-09T11:44:27.563 回答
3

你的问题是,它%c会打印一个字符,因为它是 ASCII 值。

now2是控制字符“文本开始”的 ASCII 值,它不可打印,因此printf将输出占位符(例如空格)。

如果要打印数字,请%d改用:

printf(" do foo bar at %d kul\n", 2);
于 2013-09-09T11:49:09.147 回答
3

由于定义只是替换了代码,并且您说要将2解释为与不相似char的函数放入函数中,因此您只需将索引 2 的 ASCII 代码的转义序列放在那个位置。printf()'2'%c

如果定义是即:

#define SQMETERS_PR_SEC '2'

那么这将是正确的。

于 2013-09-09T11:46:05.877 回答