2 crazymonk CrazyMonk 于 2015.05.25 22:38 提问

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

const int N = 5;

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

8个回答

devmiao
devmiao   Ds   Rxr 2015.05.25 22:53
已采纳

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

a24862
a24862   2015.05.25 22:46

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

sushuangju
sushuangju   2015.05.25 22:41

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

hyyzxqh
hyyzxqh   2015.05.25 22:42

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

hyyzxqh
hyyzxqh 这回答怎么删除啊?我室友用我电脑在这乱回答……
2 年多之前 回复
LSYtop
LSYtop   2015.05.25 22:52

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

ma704789638
ma704789638   2015.05.25 22:56

printf 的格式貌似不正确吧

a1193561652
a1193561652   Rxr 2015.05.25 23:42

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

tianyang2008
tianyang2008   2015.05.26 13:47

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

Csdn user default icon
上传中...
上传图片
插入图片