인프런 커뮤니티 질문&답변

gns님의 프로필 이미지
gns

작성한 질문수

홍정모의 따라하며 배우는 C언어

7.2 표준 입출력 함수들 getchar(), putchar() 예제

7.2강 대소문자 변환 문제 질문

작성

·

274

0

대소문자 변환문제 while문안의 코드가

while ((ch=getchar()) != '\n') {

if (ch >= 'a' && ch <= 'z')

ch -= 'a' - 'A';

else if (ch >= 'A' && ch <= 'Z')

ch += 'a' - 'A';

putchar(ch);

}

로 하면 작성이 잘되고

while ((ch=getchar()) != '\n') {

if (ch >= 'a' && ch <= 'z')

ch -= 'a' - 'A';

if (ch >= 'A' && ch <= 'Z')

ch += 'a' - 'A';

putchar(ch);

}

밑의 else if를 if로 작성하면 소문자가 대문자로 변환이 안되는데 , 왜 위의 if문이 작동이 안되는걸까요? 이해가 잘 가지 않습니다..ㅠ

답변 1

0

두번째 코드는 첫번째 코드와 달리, 입력된 문자가 'A'~'Z'인 경우에도 'a'-'A'를 더하는 코드가 실행되어, 소문자를 대문자로 바꾸는 것이 아니라 소문자가 더 커지는 결과가 나옵니다.

if문이 두 번 실행된다는 것이지요.

 

gns님의 프로필 이미지
gns

작성한 질문수

질문하기