Я надеюсь, что вы не хотите, просто «если» или «троичный».
# 1
Как насчет этого:
Вместоиз: if (condition) printf("Hi");
Использование:
condition && printf("Hi");
Оценка короткого замыкания .Это очень похоже на использование if
.
# 2
Для if (condition) a(); else b();
Использование:
int (*p[2])(void) = {b, a};
(p[!!condition])()
Использование массива указателей на функции и двойное отрицание.
# 3
Еще один вариант, близкий к троичному оператору (хотя и функции)
ternary_fn(int cond, int trueVal, int falseVal){
int arr[2];
arr[!!cond] = falseVal;
arr[!cond] = trueVal;
return arr[0];
}
Используйте это как ret = ternary_fn(a>b, 5, 3)
вместо ret = a > b ? 5 : 3;