2014-09-12 4 views
-4

로하는 경우 다른 문을 교체합니다.나는 다음과 같은 코드를 가지고 무점포 코드

감사합니다.

+4

용서해주세요,하지만 'else'는 어디 있습니까? – 101010

+0

왜? 코드는 완벽하게 읽을 수 있으며, 더 "똑똑한"것으로 변경하면 가독성이 떨어질 수 있습니다. 성능 저하를 일으키는 일부 분기 효과를 보여주는 결과를 프로파일 링하지 않으면 성능이 이유가 될 수 없습니다. – Chad

+1

'(void) ((cond) && (exp, exp, 0));'지금 당황 스럽네. (소스에 '아니요'는 없지만 아무것도 사지 않습니다.) – Deduplicator

답변

1

if을 일부 콘테스트에 사용하면 안되는 경우 물론 있습니다.
여전히 분기가없는 것처럼 보이지만 컴파일 된 코드에 분기가있을 수 있습니다.

나는 난처으로 계산하지만, 어쨌든, 여기 간다 :

(void)((cond) && (expr1,expr2,0)); 

일부 어쨌든 모호한 전처리에 아마도 옆에,를 사용하지 마십시오 :

if(cond) { 
    expr1; 
    expr2; 
} 

은 다음과 같이 쓸 수있다 아무 것도하지 않거나 나중에 (당신을 포함해서) 그것을 사용해야하는 사람은 큰 불만을 갖습니다.

+1

이 부분은 어떻게 생겼습니까? – FDinoff

+1

@FDinoff : 실제로는 분기가 없습니다. 표현식이 허용하는 경우 분기없는 실행 코드로 이어질 가능성은 다소 낮습니다. – Deduplicator

+1

@Deduplicator 왜 분기없는 실행 코드로 이어질 가능성이 약간 있습니까? 어떤 것이 든, 코드 난독 화는 컴파일러가 찾을 수있는 최적화 기회를 감소시킬 가능성이 더 큽니다. –

관련 문제