Практически вы, вероятно, использовали бы параметр минимальной ширины поля для форматера printf вместе с левым флагом выравнивания (-), например, printf(" %-5d", 1);
, но если вы хотите использовать это как возможность поиграть с троичным,обратите внимание, что его синтаксис :
conditional-expression:
logical-OR-expression
logical-OR-expression ? expression : conditional-expression
На английском языке это означает, что вы можете вложить его:
#define PR(X) printf(" %d %s", X, \
(X)<10 ? " " : \
(X)<100 ? " " : \
(X)<1000 ? " " : "" \
)
#include <stdio.h>
int main(){
printf(" %-5d", 1);
printf(" %-5d", 22);
printf(" %-5d", 333);
printf(" %-5d\n", 4444);
//PRINTS:
//1 22 333 4444
//The same thing with the ternary:
PR(1);
PR(22);
PR(333);
PR(4444);
puts("");
}