你能用%u打印一个宏吗?
#define MAX 10
printf("%u", MAX);
这样做是否合法并期望得到10?
答案 0 :(得分:5)
没有“宏变量”这样的东西。宏观扩展在编译过程的早期发生,在有“变量”甚至类型的任何真实概念之前。这是一个文字替代。
您的代码完全等同于
printf("%u", 10);
将打印10
。
有一个轻微的并发症。常量10
的类型为int
,而%u
格式则需要类型为unsigned int
的参数。使用%d
而不是%u
会更有意义。但是,对应的有符号和无符号类型(如int
和unsigned int
)的值几乎可以作为函数参数互换,只要该值在两者的范围内即可。 (printf("%u", -10)
可能会有问题。)