C中的一个问题(关于Printf)的

来源:百度知道 编辑:UC知道 时间:2024/05/30 05:09:32
一个语句
printf("x=%d,y=%-6.2f,z=%2d",2,8.999,300);
照这样输出的值应为
x=2,y=9.00 z=30
但我在程序里运行的结果“z=300”!
在数据宽度里已经定义为2个宽度就应该输出两个啊!怎么回事,难道我学错了?

数据宽度的格式只针对 scanf 或 sscanf 有效

printf 是没有这种机制的。
再说电脑也不清楚你想要输出前两位还是后两位。
scanf 就不同了,很明确

他的意思是不足两位就补空格,否则就按真实的位数走。即虽然,你当前用的是2d,它实际只对一位数有效,比如:("%2d%2d%2d",1,2,3)输出为" 1 2 3"保持两位,否则加空格。