你能用%u打印宏吗?
#define MAX 10
printf("%u", MAX);
这样做并期望获得 10 分是否合法?
最佳答案
不存在“宏变量”这样的东西。宏扩展发生在编译过程的早期,在存在任何真正的“变量”甚至类型概念之前。这是文本替换。
您的代码完全等同于
printf("%u", 10);
将打印10
。
有一个轻微的并发症。常量10
的类型为int
,而%u
格式需要unsigned int
类型的参数。使用 %d
而不是 %u
更有意义。但与有符号和无符号类型(例如 int 和 unsigned int )相对应的值作为函数参数几乎可以互换,只要该值在两者的范围内即可。 (printf("%u", -10)
可能有问题。)
关于c - C 中使用 printf 打印宏变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45872643/