30. 논리 연산자

A) C언어에서 0은 거짓이고 나머지는 참이야. 그리고 연산 결과가 참이면 1이야. B) 많이 아는 거 보니 재밌나 본데. 주의할 점은 && 연산에서는 좌항이 거짓이면 우항은 보지도 않어. || 연산에서는 좌항이 참이면 우항을 보지 않지.

&&, ||, !

C언어에서는 논리 연산자로 논리곱(&&) 연산자와 논리합(||) 연산자, 논리 부정(!) 연산자를 제공해요.

C언어에서 피 연산자의 값이 0이면 거짓이며 그 외의 값은 참이예요.
그리고 연산식이 참일 때 연산 결과는 1이고 거짓일 때 연산 결과는 0이랍니다.

논리곱 연산은 피 연산자가 모두 참일 때만 연산 결과가 참이고 그 외에는 모두 거짓이예요.
논리합 연산은 피 연산자 중에 하나라도 참이면 연산 결과는 참이고 둘 다 거짓일 때만 거짓이죠.
논리 부정은 단항 연산자로 피 연산자가 참이면 연산 결과는 거짓이고 피 연산자가 거짓이면 연산 결과는 참이예요.

◈ 논리 연산

◈ 실행 결과

 

그리고 C언어에서 논리곱 연산에서는 하나의 항만 거짓이어도 연산 결과는 거짓이죠.
따라서 좌항이 거짓일 때는 우항을 확인하지 않아요.
또한 논리합 연산에서는 좌항이 참이면 우항을 확인하지 않아도 참이므로 우항을 확인하지 않아요.

◈ 논리 연산에서 주의할 점

◈ 실행 결과

위 예를 보면 (a=3)||(b=b+3)의 연산 결과는 참이예요.
좌항인 (a=3)은 a 변수에 3을 대입하는 것이며 연산 결과는 대입 연산 이후의 a 값인 3이예요.
논리합 연산에서 좌항이 참이면 우항을 수행하지 않죠.
따라서 (b=b+3) 부분은 수행하지 않아요.
결과적으로 출력 내용을 보면 a는 3으로 변한 것을 알 수 있지만 b는 변하지 않았죠.

그리고 (a=0)&&(b=4)의 연산 결과를 보면 거짓이예요.
좌항인 (a=0) 부분은 0인 값을 a 변수에 대입하고 연산 결과는 대입 연산 이후의 a 값인 0이예요.
논리곱 연산에서는 좌항이 거짓이면 우항을 수행하지 않죠.
따라서 (b=4)를 수행하지 않아요.
결과적으로 출력 내용을 보면 a는 0으로 변하였지만 b는 변하지 않았어요.


무료 동영상 강의

30. 논리 연산자, 31. 비교 연산자