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

2021. 11. 11. 18:00·사소한 아이의 소소한 스킬/C#
반응형

 

살짝 가벼운 주제..

 

코딩을 하면서 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
}
 
Colored by Color Scripter
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
}
Colored by Color Scripter
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
}
Colored by Color Scripter
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
}
Colored by Color Scripter
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을 모두 체크할 것이다.

 

결론..!!

 

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

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

 

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

반응형
'사소한 아이의 소소한 스킬/C#' 카테고리의 다른 글
  • 031. DataGrid
  • 030. Visual Studio 오류
  • 028. UI Thread
  • 027. 압축설정/압축해제
주지님
주지님
그냥 혼자좋아하는 것들 남기는 블로그....
  • 주지님
    사소한프로그래머의 소소한행복
    주지님
  • 전체
    오늘
    어제
    • 분류 전체보기 (948) N
      • 사소한 아이의 소소한 일상 (246)
      • 사소한 아이의 소소한 먹거리 (44)
      • 사소한 아이의 소소한 정보 (74) N
      • 사소한 아이의 소소한 감사 (4)
      • 사소한 아이의 소소한 운동 (50) N
      • 사소한 아이의 소소한 여행 (40)
        • 2013_전주 (1)
        • 2014_독일 (13)
        • 2014_군산 (1)
        • 2015_제주도 (3)
        • 2015_서울모토쇼 (3)
        • 2015_진해 (1)
        • 2015_전주 (1)
        • 2016_여수 (1)
        • 2020_강릉 (1)
        • 2022_제주도 (4)
      • 사소한 아이의 소소한 강짱 (22)
        • 하트투하트 (10)
        • MAPS (1)
        • 화려한 유혹 (2)
        • 한여름의 추억 (2)
      • 사소한 아이의 TV (50)
        • Drama (9)
        • 예능 (32)
        • 사소한 아이의 다현 (9)
      • 사소한 아이의 소소한 스킬 (130)
        • Scaleform (2)
        • C# (74)
        • QT (3)
        • 알고리즘 (4)
        • Python (21)
        • PyQT5 (9)
        • C_C++ (2)
      • 사소한 아이의 소소한 축구 (282)
        • Korea (25)
        • Germany (45)
        • Bayern Munich (64)
        • Soccer_ETC (74)
        • Euro 2016 (12)
        • 친선경기 (3)
      • 사소한 아이의 소소한 생활정보 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
    • 관리
  • 링크

    • 독일여행
    • 레바티스토리
    • 프라치노 공간
    • 남성패션꿀템 블로그
  • 공지사항

  • 인기 글

  • 태그

    독일
    WPF
    뮌헨
    회사밥
    챔피언스리그
    분데스리가
    c#
    바이에른 뮌헨
    문제
    python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
주지님
029. Logical Operator (| , & 연산자)
상단으로

티스토리툴바