C语言printf函数单次调用未输出全部内容的原因咨询
为什么单次调用printf只输出了第一个变量的值?
问题出在你对printf函数的参数规则理解有误,具体原因如下:
printf的第一个参数是格式控制字符串,里面的%开头的占位符(比如%d、%5.2f)用来指定后续变量的输出格式。后续的参数必须严格对应格式串里的占位符数量和类型,按顺序一一匹配。- 你修改后的代码中,
printf("%d\n",number,"%5.2f",amount);只会把第一个参数"%d\n"当作格式串,而这个格式串里只有%d一个占位符,所以printf只会读取第二个参数number来输出。后面的"%5.2f"和amount因为没有对应的占位符匹配,会被直接忽略,自然不会输出。
修正后的正确写法应该把所有需要的占位符放在同一个格式控制字符串里,然后按顺序跟上对应的变量:
#include<stdio.h> main() { int number; float amount; number=100; amount=20.11+30.75; printf("%d\n%5.2f", number, amount); }
这样格式串里的%d对应number,%5.2f对应amount,就能正常输出两个结果了。
内容的提问来源于stack exchange,提问作者Vabs
相关产品推荐
相关产品推荐

