while 반복문을 가지고 어떤 문자를 반복해서 입력한다고 가정하자.
사용자가 계속 문자를 입력하다가 while문을 종료하고 싶으면 'Q', 'q' 를 입력하면 프로그램이 종료하도록 구현하고 싶다.그렇다면, 두 코드 중 어떤 코드가 올바르게 작동할까? 몇번인지 맞춰보도록 하자.
//1번
while (isExit != 'q' && isExit != 'Q') {
printf("문자 입력 ('Q', 'q' 입력 시 종료): ");
isExit = getchar(); // 사용자로부터 문자 입력 받기
num++;
}
//2번
while (isExit != 'q' || isExit != 'Q') {
printf("문자 입력 ('Q', 'q' 입력 시 종료): ");
isExit = getchar(); // 사용자로부터 문자 입력 받기
num++;
}
.
.
.
.
.
정답은 1번이다.
만약 2번을 선택했다면, 'q' 또는 'Q' 를 입력할경우 while문을 종료되기를 기대했을 것이다.
그렇지만 왜 틀렸는지 설명해보겠다.
OR 연산자 사용했을 때
-> 하나라도 참이면 OR 연산자는 전체가 참이 되기 때문에 반복문이 계속 실행
while(isExit != 'Q' || isExit != 'q')
1. 사용자가 'Q'를 입력했을 때:
isExit != 'Q'는 거짓
isExit != 'q'는 참
2. 사용자가 'q'를 입력했을 때:
isExit != 'q'는 거짓
isExit != 'Q'는 참
AND 연산자 사용했을 때
-> 둘 중 하나가 거짓이면 AND 연산자는 전체가 거짓이 되기 때문에 반복문이 종료된다.
while(isExit != 'Q' && isExit != 'q')
1. 사용자가 'Q'를 입력했을 때:
isExit != 'Q'는 거짓
isExit != 'q'는 참
2. 사용자가 'q'를 입력했을 때:
isExit != 'Q'는 참
isExit != 'q'는 거짓
따라서 while(isExit != 'Q' && isExit != 'q')는 Q나 q를 입력했을 때 반복문이 종료되는 올바른 코드다.
프로그래밍을 할 때는 이러한 논리 연산자의 차이를 명확하게 이해하는 것이 중요하다.
<AND 연산자를 사용한 전체 예제 코드문 >
#include <stdio.h>
int main(void) {
char isExit = NULL;
int num = 0;
// 반복문 시작
while (isExit != 'q' && isExit != 'Q') {
printf("문자 입력 ('Q', 'q' 입력 시 종료): ");
isExit = getchar(); // 사용자로부터 문자 입력 받기
num++;
// 입력된 문자를 출력
printf("입력한 문자: %c\n", isExit);
// 종료 조건 체크
if (isExit == 'q' || isExit == 'Q') {
printf("종료 문자가 입력되었습니다.\n");
break; // 반복문 종료
}
}
// 입력된 총 문자 수 출력
printf("총 입력된 문자의 수는 %d개입니다.\n", num - 1); // 종료 문자 제외
return 0;
}
'C 언어' 카테고리의 다른 글
c언어 : 예제로 보는 포인터와 배열의 관계 (0) | 2024.09.18 |
---|---|
C 언어: scanf 사용 시 입력 버퍼 비우는 방법 (1) | 2024.09.15 |
C언어_2차원 배열과 포인터의 관계(2) (0) | 2024.09.07 |
c언어_2차원 배열과 포인터의 관계(1) (0) | 2024.09.06 |
c언어 포인터와 1차원 배열의 관계 (0) | 2024.08.25 |