c- printf格式化整数以最大和最小2位显示



在我的一项作业中,printf需要一行,"我的朋友是__ __年轻的",其中空白空间必须不包含整数的数字不超过2位数字,但没有不管我尝试什么,什么都没有起作用...

这是我的代码:

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

但输出最终是

我的朋友今年22332岁。

我在做什么错?

"%2.2i"用2个字符的最小 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个字符的最小"包括一个潜在的标志字符。

对于%i格式指定符,小数点之前的数字指定最小场宽度,即值将占据的空间数量,而小数为最小数字是最小数字要显示的数字的数字,这意味着如果太短的话,结果将用零填充。

您不能显示比打印整数打印数字所需的数字。仅对于浮点类型,您才能显示更少的数字。

如果要控制最小值数字输出数,则可以使用诸如 %.2d之类的长度说明符。但是,您可能不会限制最大数字输出数量。

您可以做的是在调用之前限制int值:

#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
printf("My friend is %.2d years old.n", min(age, 99));

最新更新