我刚刚做到了
printf( (n==0) ? " %d" : " %3d", n );
但是有条件格式描述符吗?
因此,它的含义类似于“如果这种短时使用这样的填充,但是如果更长时使用这样的填充。”
可以吗?
答案 0 :(得分:7)
没有条件,但是您可以使用*在参数中指定宽度。例如:
printf(" %*d", (n==0)?1:3, n);
答案 1 :(得分:2)
您可以使用*
将字段宽度作为参数传递:
printf("%*d", length, n);
答案 2 :(得分:1)
其他答案指出了字段宽度修饰符*
。
由于您要比较零/非零以确定长度,因此甚至可以将n
的值砍成布尔值(1
或0
),然后将其相乘根据您想要的长度:
printf("%*d", !!n*3, n);