• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

cout 관련 질문 드립니다

22.09.04 16:11 작성 조회수 196

0

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

unsigned char flag = 0;

unsigned defaultState = 1;

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

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

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

cout << flag << endl;

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

답변 2

·

답변을 작성해보세요.

1

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

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

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

0

아 네! 맞네요

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

감사합니다!