Могу ли я использовать оператор if с возвращаемым значением в качестве аргумента функции в C? - PullRequest
0 голосов
/ 22 октября 2019

Я хочу иметь возможность передавать по значению оператор if:

 void function(int x){
      // do
 }
 int otherFunction1(){
      // do stuff
 }
 int otherFunction2(){
      // do other stuff
 }
 int main(){

      int x = 1;
      function(if (x==1)
                    return otherFunction1();
               else
                   return otherFunction2(); );

 }

Спасибо за ваше время, и я открыт для любых других предложенных подходов. Я знаю, что могу выполнить эту задачу, просто выполнив кучу операторов if внутри самой функции. Было просто любопытно, смогу ли я сократить количество требуемых строк.

1 Ответ

1 голос
/ 22 октября 2019

Я отвечу с помощью этой конструкции, которая наверняка доставит вам неприятности.
Т.е. я рекомендую прочитать это, посмотреть, насколько это ужасно уродливо, а затем НЕ делать это.

function((x==1)? otherFunction1() : otherFunction2() );

Он используеттроичный оператор ?:. Который используется как condition ? trueExpression : elseExpression.

Пожалуйста, используйте это вместо этого, хотя это не как "короткий".

  if (x==1)
  { function( otherFunction1() ); }
  else
  { function( otherFunction2() ); }

Или используйте предложение из комментария Дэвида К. Ранкина,особенно если вы закончите делать это несколько раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...