[5-1] 논리표현식

2024. 9. 4. 18:07·📚 STUDY/🔥 C

- if처럼 C언어의 몇 가지 구문들은 표현식의 값이 '참'인지, '거짓'인지 반드시 확인해야 함.

  ex) if문이 i < j와 같은 표현식을 평가할 때, 이 표현식이 '참'이라면 i가 j보다 값이 작다는 것을 의미함.

- 많은 프로그래밍 언어에서 i < j와 같은 표현식은 '불리언' or '논리'라는 특수한 타입을 갖지만, C에서는 1혹은 0의 결과값이 나타남. (1 : 참, 0 : 거짓)

 

📌 관계 연산자

[표 5-1] 관계 연산자

- 표는 수학에서 사용되는 <, >, ≤, ≥와 기본적으로 동일하지만, 결과값으로 1 or 0이 나옴.

 

 

📌 동등 연산자

[표 5-2] 동등 연산자

- 관계 연산자는 다른 프로그래밍 언어에서 흔히 사용하는 기호를 그대로 사용하지만, 동등 연산자는 좀 특수한 기호를 사용함.

- 관계 연산자처럼 좌향결합적이며, 결과값으로 0 또는 1을 냄. 다만, 관계 연산자보다 평가 순서가 낮음.

i < j == j < k
(i < j) == (j < k)
  • 두 개는 같음.

 

 

📌 논리 연산자

[표 5-3] 논리 연산자

- 논리연산자는 and, or, not으로 구성됨.

- ! 연산자는 단항, &&아 ||는 이항임.

- 결과값으로 0 또는 1을 반환함.

- 피연산자들은 주로 0이나 1을 갖지만, 필수는 아님.

- 논리연산자는 0이 아닌 피연산자를 참으로, 0인 피연산자를 거짓으로 취급함.

 

논리연산자는 다음과 같이 행동함.

  • !expr: expr의 값이 0이라면 1이다.
  • expr1 && expr2: expr1과 expr2가 둘 다 0이 아닌 값이면 1이다.
  • expr1 || expr2: expr1 혹은 expr2, 혹은 둘 다 0이 아닌 값이면 1이다.

위에 언급하지 않은 경우엔 전부 0을 값으로 갖는다.

 

- &&과 ||은 피연산자를 평가할 때 단락방식으로 평가함.

✅ 왼쪽 피연산자를 우선 평가한 다음 오른쪽 피연산자들 평가한다는 뜻.

만약 전체 표현식의 값이 왼쪽 피연산자 하나로 결정날 수 있다면, 오른쪽 피연산자는 평가하지 않음. ❗

 

예시)

(i != 0) && (j / i > 0)

① (i != 0)

② (j / i > 0)

③ ①&&②

이 경우 &&를 사용하기 때문에 ①, ②가 모두 만족해야 참을 반환함. ①에서 i가 0인 경우 거짓이므로 ② 식을 평가할 필요가 없음.

 

++)

! 연산자는 단항 덧셈/뺄셈과 같은 순서를 가짐.

 

 

 

💡 본 내용은 K.N.King의 C Programming: A Modern Approach 책을 참고하였습니다.

저작자표시 (새창열림)

'📚 STUDY > 🔥 C' 카테고리의 다른 글

[5-3] switch문  (1) 2024.09.05
[5-2] if문  (3) 2024.09.05
Q&A (pow, fmod, 연산자)  (3) 2024.09.03
[4-5] 표현문  (0) 2024.09.03
[4-4] 표현식 평가  (0) 2024.09.03
'📚 STUDY/🔥 C' 카테고리의 다른 글
  • [5-3] switch문
  • [5-2] if문
  • Q&A (pow, fmod, 연산자)
  • [4-5] 표현문
엄지잉
엄지잉
공부하는거 올림
  • 엄지잉
    엄지잉의 이것저것
    엄지잉
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • 🏫 학교 (2)
        • 👩‍🏫 교직 (1)
        • 🏢 USG (1)
      • 🌱 탐구 (17)
        • 📷 SLAM (7)
        • 💡 연구 (8)
        • 🌐 BOJ (2)
      • 📚 STUDY (47)
        • 🔥 C (32)
        • 📈 알고리즘 (9)
        • 👀 컴퓨터비전 (5)
        • 🔆 UNITY (1)
      • 🏆 자격증 (23)
        • ⚡ 정처기 (17)
        • 🔠 TOEIC (6)
      • 🎈 활동 (4)
        • 🎁 CJ 리모트 인턴십 (2)
        • 😶 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    C언어
    프언 활용
    BOJ
    식별자
    mocopi
    C++
    Body Tracking
    토익
    Slam
    DB 구축
    실기
    2021년
    컴퓨터비전
    필기
    Unity
    SW 개발
    SW 설계
    Remote Internship
    Azure Kinect
    2022년
    정처기
    정보처리기사
    azurekinect
    정보시스템 구축관리
    c기초
    C
    모션캡처
    RC
    알고리즘
    opencv
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
엄지잉
[5-1] 논리표현식
상단으로

티스토리툴바