2012-08-25 2 views
0

가능한 중복 :
To ternary or not to ternary?해야할까요? 연산자는 더 자주 사용됩니까?

오늘, 나는 작은 보석 우연히 내 C 책을 읽는 동안 다음 ? 연산자. 그것은 날씨에 기초한 if else 문이나 진술이 true 또는 false가 아닌 것처럼 동작하는 삼항 연산자입니다.

분명히 ? 연산자를 사용하는 것이 더 효율적입니다.

foo = somefunc(); 
if(foo) printf("\nFunction Suceeded!"); 
else printf("\nFunction Failed!"); 

이것은 코드는 첫번째와 동일하지만 ? 연산자를 사용합니다 :

다음 코드는 경우/다른 문을 사용

(somefunc을 가정하는 것은 실패 NULL을 반환)

somefunc() ? printf("\nFunction Suceeded!") : printf("\nFunction Failed!"); 

이것이 대부분의 경우 유용하지 않음을 알 수 있습니다. 그러나 if/else 문 대신 쉽게 사용할 수있는 셀 수없는 사례를 보았습니다.

이 방법을 사용하는 것이 좋습니까?

+0

가독성에 대한 자세한 내용은 중첩 된 연산자를 사용하는 경우 특히 삼항 연산자를 사용하면 코드를 이해하기가 어려울 수 있습니다. – Neil

+3

'printf (somefunc()? "\ nFunction Suceeded!": "\ nFunction Failed!"); – Vlad

+0

@Vlad 정말 멋집니다. –

답변

3

효율성을 제쳐두고, 더 읽기 쉬운 것을 사용해야합니다. ?정말 더 효율적이라면

효율성 컴파일러가 확실히 자동 ? 표현에 어떤 if 문을 다시 것, 포함되어 있습니다. 왜 그럴까?

1

3 진수는 드물게 사용하십시오. 이는 분명히 유용하며 적절한 약어 일 수는 있지만 읽을 수없는 코드로 이어질 수 있습니다. 당신의보기가 이것을 보여줍니다.

관련 문제