在我的一项作业中,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));