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

근면한 복어님의 프로필 이미지
근면한 복어

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

비트 연산과 비트 플래그

cout 관련 질문 드립니다

작성

·

263

0

뭔가 비트연산 파트와는 별개의 질문이긴 하지만 비트연산 실습을 연습해보다가 잘 이해가 안가서 질문드립니다

unsigned char flag = 0;

unsigned defaultState = 1;

flag = ((flag || defaultState) << 3);

printf("%d\n", flag);

위와 같이 C스타일로 출력하면 8로 값이 잘 나오는데

cout << flag << endl;

이렇게 C++스타일로 찍으면 값이 빈칸으로 아무것도 안나오는 이유가 혹시 뭔지 여쭤봐도 될까요??

답변 2

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

cout도 다른 클래스와 마찬가지로 출력할 타입에 따른 처리를
operator<<로 오버로딩 해놓은 상태일텐데요.

char 타입은 기본적으로 화면에 보이는 문자 (abc123 등)으로 인식하려 하는데
넘겨주신 값이 문자로 출력할 때 깨지는 혹은 엉뚱한 코드값이어서 그런 것으로 보입니다.
C 기준으로는 printf("%c", flag);를 하신 셈이죠.

cout << (unsigned int)flag << endl 이렇게 해보세요

0

아 네! 맞네요

제가 char타입으로 해서 빈칸이 나온 것 같습니다

감사합니다!

근면한 복어님의 프로필 이미지
근면한 복어

작성한 질문수

질문하기