函数调用scanf(“%d”, &weight) 包含两个参数:“%d” 和&weight。C用逗号来隔开函数调用中的多个参数;
但是printf()和scanf()函数比较特殊,其函数数目可以不受控制。
例如,我们可以使用1个、2个、3个甚至4个参数调用printf()函数。而程序需要知道参数的数目才能正常工作,这两个函数通过第一个参数确定后续参数的个数,方法是第一个参数字符串中的每个说明符对应了后面的一个参数。
以下语句包含两个格式说明符:%d 和%d
printf(“%d cats aate %d cans of tuna \n”, cats, cans);
两个格式说明符告诉程序后面还有两个参数; 确实有2个:cats 和cans;
必须保证格式说明符的数目同后面的参数数目相同。现在C通过一种函数原型机制检查函数调用是否使用了正确数目及类型的参数;
但是这对printf()和scanf()函数不起作用,因为他们的参数数目是变化的;
int scanf(const char *format, ...); //man中的scanf()函数声明;