2012-04-07 4 views
0

는에 루프 상당의 쓰기달라고 내 책에서 운동이 있었다. 조건문을 위해 && in의 사용을 건너 뛰는 방법은 무엇입니까?</p> <pre><code>for(i=0;(i<4) && (i<5);i++) </code></pre> <p>하지만 <code>&&</code> 및 <code>||</code> 연산자를 사용하지 않고 :

는이 같은 해결책을했다 :

for (i=0;;i++) 
     if((i<4)) 
      if((i<5)) 
       printf("Works!!!\n"); 
      else 
       break; 
     else 
      break; 

의미가 있습니다. C에서 초보자이므로 이보다 더 좋은 해결책이 있는지 알고 싶습니다.

미리 감사드립니다.

+6

: 이것은 잘못된 해석에 대한 어떤 방 떠나지 않아'에 대한 (I = 0; i가 4 <; 내가 ++)' –

답변

8

&&은 논리적으로 약한 하나의 조건으로 두 조건을 결합합니다. 정수가 4보다 작 으면 반드시 5보다 작아야합니다. 따라서 (i<4) && (i<5)(i<4)으로 바꿀 수 있습니다.

0

스타일에 대한 참고 사항 : 특히 중첩 된 if와 함께 중괄호를 사용하는 것이 좋습니다. 적어도 외곽의 경우에는 특히 elses가없는 경우를 사용하는 것이 좋습니다. 이렇게하면 의도 한대로 작동하지 않습니다.

if (Cond1) 
    if (Cond2) 
     DoSomething; 
else 
    DoSomethingElse; 

컴파일러는 else를 Cond2에 속한 것으로 봅니다. 당신은 간단한 누락

if (Cond1) 
{ 
    if (Cond2) 
    { 
     DoSomething; 
    } 
} 
else 
{ 
    DoSomethingElse; 
} 
+0

심지어 당신의 편집기를 (이 빔처럼 좋은 인 경우) 이것이 틀렸다는 것을 알 수 있습니다. 블록을 강조 표시하고 다시 들여 쓰기하면 들여 쓰기가 수정되어 실제 의미를 보여줍니다. – Kaz

+1

간단한 코드에 대해이 모든 수직 난장판을 추가하는 것에 동의하지 않습니다. if (cond) {if (cond2) DoSomething; } else {DoSomethingElse; }. 한 절에 브레이싱이 필요하면 다른 한 절에 브레이싱을 적용하는 것이 좋습니다. 둘 다 일 표현 작업 인 경우에는 가새를 그대로 둡니다. – Kaz

관련 문제

 관련 문제