Fun

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
글 쓴 이(By): diable (.호.)
날 짜 (Date): 1993년06월03일(목) 20시59분54초 KST
제 목(Title): re:short-circuit evaluation

boolean 연산(&&나 or)을 할 때 일어나는 문제인데요...

example 1) 
   PASCAL에서 A, B가 boolean 값을 생성하는 expression이고 

   if A and B then ...이라는 문장이 있을 때 

   A를 계산한 값에 상관없이 B를 계산합니다.

   그러나 C에서 

   if ( A && B ) ...이라는 문장이 있을 때(if문이 아니어도 됨, 

   모든 boolean 연산에서 가능함)

   A의 계산 결과가 0이면 B의 계산 결과에 상관없이

   수식 전체( A && B )가 0이 되기 때문에 

   수식 B를 계산하지 않아요...

   OR(||)에서는 반대로 적용이 되고요...
 
   이것을 short-circuit eveluation이라 해요.

   기본적으로 C에서는 이것이 제공된다고 알고 있고요...

   결국에 dirty c code의 함수 부분중

   각 행은 처음 __부분만 수행이 되요...

   그런데 PASCAL도 이것을 지원피求� 경우도 있어요

   PC에서 쓰는 turbo pascal의 경우에는 defult로 

   이것을 지원하고요 OPTION 메뉴에서 COMPILER 메뉴로 가서

   complete boolean eval을 on 시키면 전체를 계산하죠.

   그리고 C에서는 모두 이것을 지원한다고 알고 있는데...

   안 그런게 있는지 모르겠어요.

   그리고 short-circuit evaluation을 하지 않으려면 

   어떻게 해야하는지도 잘 모르겠네요...

   마지막으로 이것이 필요한 경우는 배열을 이용할 경우

   조건문에서 bound를 넘어서는 첨자가 사용되는 경우를 막아줄 수 있고요

   포인터에서 null pointer에 대해 연산하는 경우를 막아줄 수 있고요

   마지막으로 프로그램 수행시간을 단축시킬 수 있어요.






[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.