Printf格式化整数以显示最大和最小2位数字

时间:2019-02-27 03:20:36

标签: c format printf

在我的一项任务中,printf需要一行,“我的朋友是__岁”,其中的空格不得超过整数,且不少于2个数字,但无论我如何尝试,什么都不起作用...

这是我的代码:

int age = 22332;

printf("My friend is %2.2i years old.",age);

但是输出最终还是

  

我的朋友是22332岁。

我在做什么错了?

3 个答案:

答案 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 CalmentMethuselahImhotep将打印截短的年份。@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));