논리·비트연산자
1. 논리 연산자
- && : 둘 다 참(True)이어야 참(True)
- || : 하나만 참(True) 이어도 참(True)
- 주의 할 점!!
- 거짓 && 조건식 : 좌측에서 먼저 거짓이 나오면 어차피 거짓이기 때문에 우측 조건식을 실행을 하지 않음
- 참 || 조선식 : 좌측에서 먼저 참이 나오면 어차피 참이기 때문에 우측 조건식을 실행을 하지 않음
관련 문제
#include <stdio.h>
int main(){
int x=10,y=20;
if(x++ >= 10 && y++ > 20){
printf("T=x:%d,y:%d",x,y);
}
else{
printf("F=x:%d,y:%d",x,y);
}
return 0;
}
- 증감연산자 주의!
더보기
x++ >= 10 이 참이지만 y++ > 20 이 거짓으로 else가 실행되는데
각 조건식을 수행하고 바로 ++(증감연산자)가 적용됨으로 x++ = 11, y++ = 21이 됨!
정답 : F=x:11,y:21
2. 비트 연산자
- 값을 2진수로 바꿔서 비트 연산
- & : 비교하는 비트 값이 둘 다 1(True) 이어야 1(True) 임
- | : 비교하는 비트 값이 한 쪽만 1(True) 이어도 1(True)
- 주의 할 점!!
- 논리 연산자로 착각하면 안 됨!
관련 문제
#include <stdio.h>
int main(){
int x=0, y=1;
if(x&y++){
printf("T=x:%d,y:%d",x,y);
}else{
printf("F=x:%d,y:%d",x,y);
}
return 0;
}
- 증감연산자 주의!
더보기
x&y 는 x=0, y=1로 거짓이 됨. else가 실행되기 전 y++이 되면서 y=2가 됨
정답 : F=x:0,y=2
- 만약, x&&y++였다면?
더보기
x=0이어서 거짓, 따라서 y++수행하지 않고 else가 실행됨
정답 : F=x:0,y=1