029. Logical Operator (| , & 연산자)
반응형

 

살짝 가벼운 주제..

 

코딩을 하면서 if문을 사용안할수가 없다.

 

if문 안에는 true/false를 나타낼수 있는 조건문을 넣어야 한다.

 

즉,

 

1
2
3
4
5
6
7
8
9
10
11
12
13
bool bflag = true;
if( bflag )
{
    /// true
 
}
else
{
    /// false
 
}
 
 
cs

 

이러한 형태로 구성을 하여야 할 것이다.

 

그렇다면 저 bflag 부분은 저렇게만 넣을 수 있는가? 당연히 아니죠..

 

2가지, 3가지의 변수값을 확인 해야 할 때도 있다.

 

이런 상황

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
bool bflag1 = true;
bool bflag2 = true;
bool bflag3 = true;
 
if( bflag1 && bflag2 && bflag3 )
{
    /// true
 
}
else
{
    /// false
 
}
 
if( bflag1 || bflag2 || bflag3 )
{
    /// true
}
else
{
    /// false
}
 
cs

 

그렇다면.. 여기서 사용한 &&, ||은 어떤것인가.. 다들 알다싶이 AND, OR 조건이다.

 

그렇다면  & 구문과 &&의 구문의 차이는 무엇일까..? | 구문과 || 구문 또한 무슨 차이일지...

 

2개의 구문 차이는 뒤에 해당하는 조건을 체크하느냐 마냐이다..

 

즉,

1
2
3
4
5
6
7
8
9
10
11
12
13
bool bflag1 = false;
bool bflag2 = true;
bool bflag3 = true;
 
if( bflag1 && bflag2 && bflag3 )
{
    /// true
 
}
else
{
    /// false
}
cs

 

코드 확인상 bflag1은 false, bflag2, bflag3는 true 다

 

이런 상황이라면 bflag1이 false 이므로 bflag2, bflag3는 확인도 하지 않고 false로 판단한다 (and구문이므로 어떻게 해든 false 가 나와버리는 상황)

 

만약 bflag 값이 아래와 같다면..

1
2
3
4
5
6
7
8
9
10
11
12
13
bool bflag1 = true;
bool bflag2 = false;
bool bflag3 = true;
 
if( bflag1 && bflag2 && bflag3 )
{
    /// true
 
}
else
{
    /// false
}
cs

 

bflag1은 true이므로 조건을 확인해보고 bflag2가 false이므로 여기서 조건 종료, bflag3은 무시할 것이다.

 

이것이 && 구문...

 

만약 저 부분에 & 구문을 썼다면 bflag1, bflag2, bflag3을 모두 체크할 것이다.

 

결국 쓸데없는 시간을 소비할 것이라는 것.

 

해당 예제는 간단하므로 별 차이가 없겠지만, 만약 큰 데이터를 참조해야한다거나 한다면 차이가 생길수 있다.

 

|| 구문 또한 && 구문과 동일하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
bool bflag1 = true;
bool bflag2 = false;
bool bflag3 = false;
 
if( bflag1 || bflag2 || bflag3 )
{
    /// true
 
}
else
{
    /// false
}
cs

 

bflag1이 true 이므로 bflag2, bflag3은 무시하고 무조건 true로 체크한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
bool bflag1 = true;
bool bflag2 = false;
bool bflag3 = false;
 
if( bflag1 | bflag2 | bflag3 )
{
    /// true
 
}
else
{
    /// false
}
cs

 

bflag1이 true이나 | 구문이므로 bflag2, bflag3을 모두 체크할 것이다.

 

결론..!!

 

값 비교구문을 사용할때는 &구문이나 | 구문을 쓰지말고  && 구문, || 구문을 사용하자!!!

(비트 연산시에는 &, | 구문을 사용!!!!)

 

구문이 간단하여 예제는 없음..!

반응형