在我的一项任务中,printf
需要一行,“我的朋友是__岁”,其中的空格不得超过整数,且不少于2个数字,但无论我如何尝试,什么都不起作用...
这是我的代码:
int age = 22332;
printf("My friend is %2.2i years old.",age);
但是输出最终还是
我的朋友是22332岁。
我在做什么错了?
答案 0 :(得分:0)
对于%i
格式说明符,小数点前的数字指定最小字段宽度,即该值将占用的空格数,小数点后的数字为显示的最小位数。 ,这意味着如果结果太短,结果将被填充为零。
显示的位数不能少于打印整数的位数。仅对于浮点类型,您可以显示较少的数字。
答案 1 :(得分:0)
"%2.2i"
打印的 minimum (最小字符)为2个字符 1 (第一个2
),根据需要用空格填充,并至少填充2位数字(第二个2
)。
要“至少有2位数字……”,请使用"%.2i"
要“最多有2位数字”,请确保该值在[-99 ... 99]范围内。例如,使用age % 100
printf("My friend is %.2i years old.",age%100);
99岁以上的人Jeanne Calment,Methuselah,Imhotep将打印截短的年份。@Jonathan Leffler
1 “ 最少个2个字符”包括一个潜在的符号字符。
答案 2 :(得分:0)
如果要控制输出的最小位数字,可以使用%.2d
之类的长度说明符。但是,您可能不限制最大位数的输出。
您可以做的是在通话前限制int
的值:
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
printf("My friend is %.2d years old.\n", min(age, 99));