2014-10-13 4 views
1

Я спрашивал себя, если его можно было сделать что-то вроде этого:C тройная: делать две разные вещи

condition ? do this && THIS : else; 

как:

nb = (nb1 + nb2) > 9 ? (nb1 + nb2) % 10 && nb1 + 1 : 0; 

Примечание это не только пример, это означает, что ничего ,

+3

'(nb1 + nb2)% 10 && nb1 + 1' - это одно выражение, а не« две разные вещи ». –

+0

Если вам нужно сделать две вещи, которые действительно раздельны, вам следует рассмотреть возможность использования нормального оператора 'if'. –

ответ

3

Существует простой способ:

condition ? function_that_does_several_things() : else_expr; 

другая вещь вы можете получить выражения в списке:

int a = (1,2); 

присваивает 2 до a. Поэтому вы можете попробовать следующее:

condition ? (do_this, and_this) : else_expr; 

Но я предлагаю против этого; это действительно сложно понять, что здесь происходит, и многие люди будут смущены, удивлены и разочарованы, увидев такой код.

2

Это не «сделать это», это «оценить это». Удалить условие и «ложный» путь, и вы получите это:

nb = (nb1 + nb2) % 10 && nb1 + 1; 

Так что, да, вы можете сделать это, но значение nb будет результатом логического выражения ..., который, по существу, это:

nb = ((nb1 + nb2) % 10 != 0) && (nb1 + 1 != 0); 
Смежные вопросы