본문 바로가기

C++

char 자료형과 ASCII 코드

#include <iostream>

using namespace std;

int main()
{
    char a = 'A';
    char b = 'B';
    
    // 어떤 수가 출력될까?
    cout << sizeof(a + b) << endl;
    
    return 0;
}

 

sizeof는 자료형의 크기를 구하는 연산자입니다.

그렇다면 어떤 수가 출력될까요?

 

char는 1byte니까 1?

아니면 두 문자를 더했으니까 2?

 

정답은 4 입니다.

 

 

변수 a에는 'A'에 해당하는 아스키 코드 값 65가 들어있습니다.

변수 b에는 'B'에 해당하는 아스키 코드 값 66이 들어있습니다.

 

char형끼리 더하면, 문자가 AB로 결합되는 것이 아니라 변수가 담고 있는 아스키 코드 값이 더해집니다.

여기서는 a+b에 131이 들어있게 됩니다.

char형에는 operator+ 가 정의되어있지 않아 암시적으로 int형으로 값을 반환하게 됩니다.

그래서 int의 크기인 4(bytes)가 출력된 것입니다.

 

참고한 페이지 : Stackoverflow <char + char = int? Why?>

'C++' 카테고리의 다른 글

namespace 사용 이유  (0) 2020.01.26
call-by-value와 call-by-reference의 차이  (0) 2020.01.26
class와 struct의 차이 3가지  (0) 2020.01.26
int와 long의 차이  (0) 2020.01.22
float과 double의 차이 (자료형의 크기 정리)  (0) 2020.01.22