Грамматика довольно ясно говорит, как вы можете это сделать. Грамматика:
conditional_expression
: logical_or_expression
| logical_or_expression '?' expression ':' conditional_expression
;
https://www.lysator.liu.se/c/ANSI-C-grammar-y.html
Это говорит о том, что все, что следует после :
, должно быть действительным условное выражение .
Но это редко бывает полезно. В соответствии с ответом, который вы дали, вы хотите использовать его для форматирования распечаток. Но было бы гораздо лучше извлечь его из отдельной функции, например:
const char* suffix(int n)
{
static const char suffix[][3] = { "st", "nd", "rd", "th" };
int rIndex;
/* Some logic */
return suffix[rIndex];
}
А затем
printf("%d%s\n", i, suffix(i));