문자 배열이 더 많거나 적습니다. 배열의 각 공간에는 char가 들어 있는데, 필자의 이해에 따르면, 단일 바이트 (8 비트)의 정보입니다. 나는 예를 들면 ... 이진 문자열을 통해 문자 값을 지정 할 수 있어야합니다이진 문자열과 오버플로에서 C++ char 정의
char someChar = char(0b00110011);
내가 이해할 수없는 것은 왜 지정할 수있는 최대 값이 나는 것을 떠날 필요가 0b0XXXXXXX입니다 MSB 0으로 설정하십시오. 내가 그렇게
char someChar = char(0b11111111);
같은 문자를 설정하려고하면 나는 진수 값을 얻을 : 매우 오버 플로우처럼 보이는 -2147483648. 그래서 나는 여기서 무슨 일이 일어나는지 정말로 모르겠다. char에 sizeof() 연산자를 호출하면 1 (1 바이트)의 답을 얻을 수 있습니다. char가 서명되지 않은 경우 0-255를 얻거나 char가 서명 된 경우 -128-127을 얻지는 않습니다. 조언/의견을 보내 주시면 감사하겠습니다. 의견의 대부분에 대응
- 나는 그것을 밖으로 인쇄하기 전에 int로 그것을 변환 : 표준 : : cerr < < INT (someChar) 철저한 설명에 대한 모든
감사합니다 :)
"내가 -2147483648을 얻습니다."라고 말하면,'someChar'를 잡고'-2147483648'을 생성하는 실제 코드는 무엇입니까? – NPE
'char' 자체는 _signed_입니다. 이는 MSB가 음수를 표시하는 데 사용됨을 의미합니다. 이렇게 많은 수를 얻으려면 32 비트 int로 변환해야합니다. –
@JoachimPileborg :'char' 자체는 * 또는 * 부호가 붙을 수 있습니다. 그것은 구현에 달렸습니다. (이 점에서 다른 정수 유형과 다릅니다.) – NPE