#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 |