C语言printf函数问题。。。。。

C语言printf函数问题。。。。。

问题描述:

const int N = 5;

printf("asd",N); 
N所在的位置不应该是可变参数吗?我都定义成常量了,怎么这个程序还能运行啊?

可变参数和常量不矛盾。
可变参数的可变是指参数的个数可变。

printf是根据格式化字符串中的格式字符进行解析的。后面的参数可以多,但是不能少。

前面字符串里少了一个格式符,应该有个%d。

可变参数是说数量?还是参数不固定?……你在哪里看的啊,有原文么,不要误解。
任何情况还是要以实际运行编译为准,尽信书不如无书。
我选择相信编译器……

printf的格式是这样 printf("%d",N); 出现%d,%f等等 后面的变量是不能省略的 。不然就会直接显示了。

printf 的格式貌似不正确吧

是printf()是接收的是可变参数的,是说printf()可以有不同数量的参数,不是输入的参数的数值必须可变。

这个printf是编译器,给解决的,
是通过格式,然后循环查找后边的参数,进行动态生成字符串。
参数多了,没问题,若参数少了,可能产生访问越界等问题。