我用一个printf
语句写了一个简单的程序,比如hello world。
#include <stdio.h>
#define MAX 100
int main()
{
printf("Max is %d\n",MAX);
}
我研究过,宏只是用预处理器代替发生。通常printf
需要一个带有相应格式说明符的变量名来打印变量的值。
在这里,根据我的理解,应该在printf
调用中替换100并且应该引发错误。
但输出是:
Max is 100
如何以及为何?
答案 0 :(得分:4)
“通常
printf()
需要一个带有相应格式说明符的变量名来打印变量值。”
你错了。 printf()
提供的所有格式说明符都需要特定类型的 参数 ,而不是 变量 那种在这种情况下,100
integer literal是%d
的有效参数。
因此,printf("Max is %d\n",100);
在C
中都是有效且合法的陈述。你得到的输出是预期的输出,不应该有错误或警告。
只需添加对实际单词的引用,引用C11
,章节§7.21.6.1,fprintf()
(强调我的)
d,i
int参数转换为[...]
答案 1 :(得分:1)
printf
格式"%d"
告诉printf
从参数列表中提取int
参数。如果int
来自变量或文字并不重要。