2017-08-25 29 views
-1

可以用%u打印宏吗?在C中使用printf打印宏变量

#define MAX 10 
printf("%u", MAX); 

是否合法要做到这一点,并期望得到10?

+1

在这种情况下没有问题。您可以获得预期的输出。你为什么认为这是违法的? – BLUEPIXY

回答

5

有没有这样的事情作为“宏观变量”。在有任何“变量”或甚至类型的真正概念之前,宏编译在编译过程的早期就会发生。这是一个文本替代。

你的代码是完全等同于

printf("%u", 10); 

,它将打印10

有一种轻微的并发症。常量10的类型为int,而%u格式需要参数类型为unsigned int。使用%d而不是%u会更有意义。但是,对应于带符号和无符号类型的值(如intunsigned int)与函数参数几乎可以互换,只要该值在两者的范围内即可。 (printf("%u", -10)可能有问题。)