작성
·
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
cout도 다른 클래스와 마찬가지로 출력할 타입에 따른 처리를
operator<<로 오버로딩 해놓은 상태일텐데요.
char 타입은 기본적으로 화면에 보이는 문자 (abc123 등)으로 인식하려 하는데
넘겨주신 값이 문자로 출력할 때 깨지는 혹은 엉뚱한 코드값이어서 그런 것으로 보입니다.
C 기준으로는 printf("%c", flag);를 하신 셈이죠.
cout << (unsigned int)flag << endl 이렇게 해보세요
0