2014-10-13 6 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);