[초보질문] if문 기초~

프로그래밍 일반에 관한 포럼입니다.

운영자: 류광

Locked
비회원

[초보질문] if문 기초~

전체글 글쓴이: 비회원 » 2005-05-31 17:20

if( 조건1 && 조건2 )
{

}

일케 있을때

조건1, 조건2 둘중 하나라도 거짓이면 그냥 빠져나가잖아요

스택구조라 보통 뒤에놈부터 연산되는경우를 많이 봤는데

저런 경우에서도 뒤에서부터 조건을 먼저 검사하나요?

조건2가 참이면 조건1를 검사하고 조건1도 참이면 중괄호 안으로 들어가는건가요^^

if(조건1 && 조건2 && 조건3 && 조건4) 머 일케 많은구조라면(일케하면안되겠지만^^)
순서에따라 퍼포먼스에도 영향을 미치겠네요^^

답변좀^^

etds
전체글: 194
가입일: 2004-07-20 11:56
사는 곳: (주) 애니파크

앞에서부터 합니다.

전체글 글쓴이: etds » 2005-05-31 17:37

앞에서 조건에 안 맞으면 바로 나갑니다.

albertyun
전체글: 5
가입일: 2004-11-15 17:07

전체글 글쓴이: albertyun » 2005-06-01 03:14

Short Circuit

사용자 아바타
chaen
전체글: 202
가입일: 2001-08-28 09:00
사는 곳: Zepetto
연락처:

옛날 생각이...

전체글 글쓴이: chaen » 2005-06-01 10:29

예전에... 대략 5년전 쯤에 있었던 일인데...

코드: 모두 선택

if( pObj != NULL && pObj->IsAlive() )
{
    // ....
}
대략 이런 코드였는데...
pObj 가 NULL인 경우, 어떤 컴파일러에서는 첫번째 조건만 검사하고 넘어가서 괜찮았고,
어떤 컴파일러는 두번째 조건까지 계산해서 그 다음에 && 연산을 하려다가 에러가 났었다는...
요즘도 그런 컴파일러가 있를려나? -,.-;

궁금이
전체글: 237
가입일: 2005-01-19 11:06
사는 곳: ProjectS

Re: 옛날 생각이...

전체글 글쓴이: 궁금이 » 2005-06-01 11:00

chaen 작성:예전에... 대략 5년전 쯤에 있었던 일인데...

코드: 모두 선택

if( pObj != NULL && pObj->IsAlive() )
{
    // ....
}
대략 이런 코드였는데...
pObj 가 NULL인 경우, 어떤 컴파일러에서는 첫번째 조건만 검사하고 넘어가서 괜찮았고,
어떤 컴파일러는 두번째 조건까지 계산해서 그 다음에 && 연산을 하려다가 에러가 났었다는...
요즘도 그런 컴파일러가 있를려나? -,.-;

전.. 혹시 에러날까 두려워.. 포인터 널체크하고나서.. 그 안에서 다시 if 검사합니다..
if가 중첩되서 좀 보기 싫지만.. 그래도 왠지 모르게 걱정되서 ㅡㅡ;;

chadr
전체글: 980
가입일: 2003-06-01 12:28
사는 곳: 모대학
연락처:

Re: 옛날 생각이...

전체글 글쓴이: chadr » 2005-06-01 11:17

chaen 작성:예전에... 대략 5년전 쯤에 있었던 일인데...

코드: 모두 선택

if( pObj != NULL && pObj->IsAlive() )
{
    // ....
}
대략 이런 코드였는데...
pObj 가 NULL인 경우, 어떤 컴파일러에서는 첫번째 조건만 검사하고 넘어가서 괜찮았고,
어떤 컴파일러는 두번째 조건까지 계산해서 그 다음에 && 연산을 하려다가 에러가 났었다는...
요즘도 그런 컴파일러가 있를려나? -,.-;
컴파일러마다 다른걸로 알고 있습니다..

그런데 vc에서는 첫번째조건이 거짓이면 두번째 조건을 검사하지 않더군요..

gcc는 어떤지 모르겠네요..

seeper
전체글: 1483
가입일: 2003-06-06 23:19
연락처:

Re: 옛날 생각이...

전체글 글쓴이: seeper » 2005-06-01 11:22

gcc도 검사 않합니다.
제가 gcc랑 vc를 사용하는데...
아래와 같이 즐겨 씁니다.

코드: 모두 선택

if(pObj && pObj->IsAlive() )
{
    // ....
}

사용자 아바타
Testors
전체글: 557
가입일: 2003-07-26 00:34
사는 곳: (주)nFlavor
연락처:

전체글 글쓴이: Testors » 2005-06-01 11:30

Programming Language C++ 작성:5.14 - Logical AND operator [expr.log.and]
logical-and-expression:
inclusive-or-expression
logical-and-expression && inclusive-or-expression

-1- The && operator groups left-to-right. The operands are both implicitly converted to type bool (clause conv). The result is true if both operands are true and false otherwise. Unlike &, && guarantees left-to-right evaluation: the second operand is not evaluated if the first operand is false.


5.15 - Logical OR operator [expr.log.or]
logical-or-expression:
logical-and-expression
logical-or-expression || logical-and-expression

-1- The || operator groups left-to-right. The operands are both implicitly converted to bool (clause conv). It returns true if either of its operands is true, and false otherwise. Unlike |, || guarantees left-to-right evaluation; moreover, the second operand is not evaluated if the first operand evaluates to true.
플머/모델러/애니메이터 구해염 **현역/보충역 병특가능** / http://testors.net/

Locked