2013-04-30 1 views
-2

좋은 코드 및 코드 최적화 개발을위한이 질문.부울 조건 테스트 - 어느 것이 좋습니다?

boolean a = false; 

는 조건

if(a == false) 

또는

if(!a) 

시스템 레벨에서 두 조건이 일어날 것을 몇 가지 설명을 제공하십시오 가장 좋습니다.

+5

어떤 프로그래밍 언어입니까? 어떤 컴파일러를 사용하고 있습니까? 대상 플랫폼이 무엇입니까? – Thilo

+1

@Thilo : 나는 일반적인 용어로 어떤 플랫폼이나 프로그래밍 언어도 묻지 않았다. 이 단지의 예. –

+4

'if ((a == false) == true)'의 무엇이 문제입니까 ?? ; -> – Roddy

답변

3
if (!a) 

다른 하나는 끔찍한 "부울 세탁"스타일입니다.

내부적으로 의미는 동일합니다 (심지어 C에서 두 조건 모두 a이 정확히 0 일 때도 마찬가지 임). 따라서 최적화와 관련하여 차이는 없습니다.

+0

"boolean laundering"이라는 용어를 설명 할 수 있습니까? 나는 그것을 좋아한다 (돈세탁을 연상시킨다). 그러나 나는 그것을 이해할 수 없다. –

+0

문구는'if (condition) {var = true; } else {var = false; }'최근에. 아무 래도 많은 사람들이 부울과 조건을 같은 것으로 보지 않으며 변환을 위해 'if'또는 관계 연산자가 필요합니다. 예, 돈세탁과 유사한 점이 있습니다. – starblue

3

이 결과는 아마도 컴파일러가 결정한 것과 정확히 동일한 결과로 끝납니다.

1

정확히 동일합니다. 컴파일러는 가장 좋은 방법으로 코드를 컴파일합니다.

+0

나는 약간의 차이점을 @ 시스템 레벨이라고 생각한다. –

+2

@AnkurPatel. '일반적인 용어'에서 기능이나 성능에는 차이가 없습니다. 어떤 특정한 컴파일러 나 인터프리터가 다른 컴파일러 나 인터프리터를 우선적으로 선호하지만 asm 코드/벤치 마크를 검사해야만 ... – Roddy

0

부울 변수로 수행 된 작업 내역에 달려 있다고 생각합니다. 당신이 이전에 수학적 표현식을 사용하여, 유형과 달리 사용하여 값 할당과 같은 특별한 방법으로 부울 변수에 값을 할당 한 경우

후 나는 제 2의 선택을 생각 : 는 안전과 기능에 가능성이있는 경우 (A!) 당신이 기대 하듯이, 부울 변수 나 부울 값으로 평가되는 표현식만을 사용하여 항상 값을 할당했다면 그다지 중요하지 않습니다. 그러나, 개인적으로 첫 번째 선택 : if (a == false) 읽기 쉽습니다.

성능과 관련하여 다른 답변도 모두 동의합니다.

관련 문제