Есть ли дескриптор формата строки "ветвление"? - PullRequest
0 голосов
/ 07 февраля 2019

Я только что сделал это

printf( (n==0) ? " %d" : " %3d", n );

, но есть ли дескриптор условного формата?

Итак, это будет означать что-то вроде ", если это очень короткое использование такого-то и такого-тозаполнение, но, если это дольше, используйте такие-то и такие-то дополнения. "

Можно сделать?

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Вы можете передать ширину поля в качестве аргумента, используя *:

printf("%*d", length, n);
0 голосов
/ 07 февраля 2019

Другие ответы указывают на модификатор ширины поля *.

Поскольку вы сравниваете ноль / ненулевое значение для определения длины, вы можете даже взломать значение n в логическое значение (1 или 0), а затем умножить его на желаемоедлина:

printf("%*d", !!n*3, n);
0 голосов
/ 07 февраля 2019

Там нет условного, но вы можете использовать *, чтобы указать ширину в аргументах.например:

printf(" %*d", (n==0)?1:3, n);
...