[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 94

 

두 옵션 모두 정확하지만 두 번째 옵션이 더 빠릅니다. 첫 번째 조건에서는 모든 조건이 항상 확인되고 두 번째 조건에서는 모든 조건이 확인되지 않습니다. 그리고 else 소유권과 혼동하지 않는 것이 좋습니다. 다음과 같이 작성하십시오.

 //--- 2.
if (cond_0)
{  if (cond_1)           a=result_1;
   else if (cond_2)      a=result_2;
        else if (cond_3) a=result_3;
}

또는 즉시 블록을 구성하는 중괄호를 넣으십시오.

 
Mathemat :

두 옵션 모두 정확하지만 두 번째 옵션이 더 빠릅니다. 첫 번째 조건에서는 모든 조건이 항상 확인되고 두 번째 조건에서는 모든 조건이 확인되지 않습니다. 그리고 else 소유권과 혼동하지 않는 것이 좋습니다. 다음과 같이 작성하십시오.

또는 즉시 블록 주위에 중괄호를 넣으십시오.

당신의 충고에 감사합니다. 이전 에 Expert Advisor를 올바르게 작성 하려고 시도했다면 이제는 속도에주의를 기울입니다. :)
 
Mathemat :

두 옵션 모두 정확합니다.

아니오, 코드는 일반적으로 동일하지 않습니다.
 
물론 조건을 계산할 필요가 없다면 swith()를 건너뛰는 것이 더 쉬울 수도 있습니다.
 
TheXpert : 아니오, 코드는 일반적으로 동일하지 않습니다.

예, 이제 cond_1, cond_2, cond_3이 상호 배타적이지 않을 때 무슨 일이 일어날지 추측해 보겠습니다...

나는 주장하지 않습니다. 코드는 일반적인 경우에 다른 결과를 제공합니다. 그러나 조건이 교차하지 않으면 결과는 동일합니다.

 
FAQ :
물론 조건을 계산할 필요가 없다면 swith()를 건너뛰는 것이 더 쉬울 수 있습니다.
switch에서 case의 값은 int여야 하며 cond_가 항상 int인 것은 아닙니다. 솔직히 말하면 논리 자체에 관심이 있었는데, 어떤 기록이 더 낫거나 빠릅니다.
 
paladin80 :
switch에서 case의 값은 int여야 하며 cond_가 항상 int인 것은 아닙니다. 솔직히 말하면 논리 자체에 관심이 있었는데, 어떤 기록이 더 낫거나 빠릅니다.
가장 일반적으로 사용되는 조건이 맨 위에 있는 별도의 조건
 
paladin80 :
switch에서 case의 값은 int여야 하며 cond_가 항상 int인 것은 아닙니다. 솔직히 말하면 논리 자체에 관심이 있었는데, 어떤 기록이 더 낫거나 빠릅니다.

두 번째이지만 중첩에 제한이 있습니다.

가능하면 케이스를 사용하는 것이 좋습니다.

 
예, 스위치를 사용합니다. 상호 배타적인 조건과 관련하여 나는 이 현상을 다음과 같이 이해합니다.
 //--- 1.
int x= 1 , y= 1 ;
if (x== 1 )
{   if (y> 0 )  a=result_1;
   if (y< 2 )  a=result_2;
   if (y== 1 ) a=result_3;
}
// a=result_3

//--- 2.
int x= 1 , y= 1 ;
if (x== 1 )
{   if (y> 0 )            a=result_1;
   else if (y< 2 )       a=result_2;
         else if (y== 1 ) a=result_3;
}
// a=result_1
 

당신에게 모든 조건은 y = 1에서 관찰됩니다. 그들은 서로를 배제하지 않습니다.

예를 들어, y<0, y==0, y>0과 같이 상호 배타적입니다.