как проверить множественные возвращаемые значения из функции, вызываемой один раз, без сохранения в переменной (?)
Не совсем, но с некоторыми ограничениями, давайте злоупотребим C и предположим, a, b
и f()
возвращают символ.
1 Формируют массив символов, состоящий из a
и b
, и ищите его, используя memchr()
. Вдохновленный @ David C. Rankin (он не хранит результат f()
в переменной, но вызывает функцию)
int main(void) {
// v-------------v compound literal
if (memchr((char [2]){a,b}, f(x), 2)) {
puts("Success");
}
return 0;
}
Я вижу добавленный OP "тип возвращаемого значения int" - О, хорошо .
if ( 2 < f(x) < 5)
- допустимый код, но он не выполняет то, что хочет OP.
Это как if ( (2 < f(x)) < 5)
, который сравнивает f(x)
с 2 и приводит к 0 или 1, что всегда меньше 5.
Жесткая толпа сегодня, так как насчет ниже. Требуется немного математического расширения для int
overflow`, но он близок.
abs(2*f(x) - (a+b)) == abs(a-b)
1 Несерьезные предложения по коду для производственного кода - используйте временный.