inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2027 대비!) 일주일만에 합격하는 정보처리기사 실기

질문

해결된 질문

200

김인도

작성한 질문수 23

0

System.out.printin("str1==str2:"+(str1==str2));

여기서 출력값이 왜 true혹은 false로 나오는건가요? 앞에 +가 참거짓을 나타나게해주는건가요? 디테일한 설명이 없어서 따라가기가 힘듭니다..

 

 

강의수준에는 입문이라고 되어있는데

전혀 입문강의가 아니네요ㅜㅜ

지금 강의 하나만 계속 반복해서 듣고 저게 무슨말이지 하면서 진도를 나갈수가없네요.

열심히 따라가고 싶은데 힘드네요.

python java c 정보처리기사

답변 1

0

주말코딩

안녕하세요, 수강해주셔서 감사드립니다.

 

출력 부분에서 제가 좀 더 섬세한 설명을 했어야 했나 싶습니다.

 

질문 주신 부분은 타입캐스팅 (형변환)이라고 합니다.

굳이 다루지 않은 이유는 모든 형변환을 외울 시간에 다른 로직과 연산자를 배우는 것이

짧은 기간 안에 합격(60점)으로 가는 지름길이라고 생각했기 때문입니다.

형변환을 모든 언어에서 모든 타입으로 다루기에는 생각보다 배워야 할 것이 넓고 깊습니다.

 



해설:

일단 ==, <=, >= , != 와 같이 비교하는 연산자의 경우에는

C언어에서는 거짓이면 0, 참이면 1을 리턴(돌려준다)합니다.

Java에서는 true, false를 반환합니다.

 

프로그래밍 언어에서 보통 참/거짓을 저장하는 데이터는 boolean 형태라고 하는데,

이 형태는 문자와 더하는 순간 형변환이 발생합니다.

형태가 바뀐다는 것이죠.

('나는 boolean이었는데 문자하고 더하라고 하네? 그러면 내가 문자로 바뀌어야겠다.')

 

그래서 문자열로 변환해서 앞에 있는 문자 뒤에 붙입니다.

(문자끼리는 더하면 붙기 때문입니다.)

 

C언어는 Java와 달리 출력합니다.

왜냐하면 애초에 출력하는 템플릿 자체가 문자열인데,

거기에다가 출력할 값의 형태만 지정하기 때문입니다.

#include <stdio.h>

int main() {
    int a = 5;
    int b = 10;
    
    // 비교 연산자 결과
    int result = (a == b);
    
    // 비교 결과와 함께 문자열 출력
    printf("a == b: %d\n", result);
    
    // 다른 예시
    result = (a < b);
    printf("a < b: %d\n", result);
    
    result = (a > b);
    printf("a > b: %d\n", result);
    
    result = (a != b);
    printf("a != b: %d\n", result);
    
    result = (a <= b);
    printf("a <= b: %d\n", result);
    
    result = (a >= b);
    printf("a >= b: %d\n", result);
    
    return 0;
}

코드의 출력값:

a == b: 0

a < b: 1

a > b: 0

a != b: 1

a <= b: 1

a >= b: 0

 

이 경우에는 문자열 a (연산값) b: %d\n 로 템플릿이 지정되어 있습니다.

C언어에서는 boolean값과 문자를 더할 수는 없습니다.

 

다만, 특정 헤더(header)파일을 가져오게 되면 더해질 수도 있습니다.

헤더파일이란 우리가 매번 맨 위에서 지정하는 ㅇㅇㅇ.h 파일을 말합니다.

특정 헤더파일을 가져와야 우리가 C언어에서 제공하는 다양한 함수를 사용할 수 있습니다.

#include <stdio.h>
#include <stdbool.h> // C99 표준 이후

int main() {
    bool flag = true;  // 또는 int flag = 1;
    char letter = 'A'; // 아스키 코드 값 65

    // flag 값과 letter 값을 더하기
    char result = letter + flag;

    // 결과 출력
    printf("The value of letter: %c (ASCII: %d)\n", letter, letter);
    printf("The value of flag: %d\n", flag);
    printf("The result of letter + flag: %c (ASCII: %d)\n", result, result);

    return 0;
}

이 경우에는 출력값이

The value of letter: A (ASCII: 65)

The value of flag: 1

The result of letter + flag: B (ASCII: 66)

이렇게 나옵니다. false를 더하는 경우 그대로 65입니다. (0으로 취급)

 

 

요약하자면,

비교 연산자의 결과값은 true 혹은 false일텐데

이것을 문자와 더하는 순간 문자 형태로 바뀝니다.

 

감사합니다.

정처기 2026-3 실기 문의

0

88

2

정처기 실기 3회 컴싸 사용 여부

0

56

1

모의고사 1 회 2번문제 중

0

74

2

26-2 이론문제 재탕

1

56

1

26-2년도 코드문제

0

38

0

26-2 코드문제

0

44

1

15분 48초 질문

0

61

2

26-1년도 이론문제 재탕

0

68

1

26-1년도 코드문제 재탕

0

48

0

이론재탕만 눈치챘어도

0

77

1

25-3년도 이론문제 재탕

0

59

1

25-3년도 코드문제 재탕

0

43

0

출력값 문의

0

56

2

25-2 분기커버리지

0

49

0

25-2 이론 재탕

0

70

1

25-1 이론 재탕

0

54

1

서브넷 마스크

0

55

2

모의고사 1회 계산문제 2개 맞았는데

0

70

2

업캐스팅 문제 예시 4번 부모 호출

0

51

2

모의고사 자료 해설이 너무 불친절하네요.

0

96

2

부모의 생성자 출력 관련

0

50

2

24-3 이론파트 재탕문제

0

58

0

누락코드

0

47

1

다차원 배열 포인터 질문있습니다

0

72

3