int main()
{
char MCU = 0b00000000;
char al_av = 0b10100000;
// Before bit operation
cout << "MCU = " << int(MCU) << endl;
MCU = MCU | al_av;
// After the bit operation
cout << "MCU = " << int(MCU) << endl; // Expected 160, got -96
char temp = 160;
cout << temp; // got the a with apostrophe
return 0;
}
I는 출력을 기대 char temp
(160)은 [-127,127] 간격을 초과 할뿐만 아니라, 결과는 ASCII 테이블의 하나 (때문에 네가티브 번호 (또는 경고 / 에러)로 아포스트로피와 )
에 CPP 참조 :
대상 시스템에서 가장 효율적으로 처리 할 수있는 문자 표현을위한 char 유형 ( signed char 또는 unsigned char과 동일한 표현 및 정렬을 갖지만 항상 고유 한 유형 임)
이탤릭체로 쓰여진 내용을 이해하지 못합니다 (또한이 질문에 많은 도움이되는지도 모르겠습니다). 암시 적 변환이 있습니까?
부호있는 문자가 127보다 큰 값을 가질 수있는 이유는 무엇입니까?
그럴 순 없어.
char x = 231;
여기에는 (암시 적) 정수 변환이 있습니다. 231은 유형 의 prvalue 이며 변환되기 전에 int
값 -25
을 취합니다 char
(시스템에 서명 됨). 당신은 당신의 컴파일러에게 그것에 대해 경고하도록 요청할 수 있습니다 -Wconstant-conversion
.
대상 시스템에서 가장 효율적으로 처리 할 수있는 문자 표현을위한 char 유형 ( signed char 또는 unsigned char과 동일한 표현 및 정렬을 갖지만 항상 고유 한 유형 임)
이탤릭체로 쓰여진 것을 이해하지 못합니다
이것은 유형이 유지 된 것과 관련이없는, 단지 세 가지 유형의 보장 char
, signed char
그리고 unsigned char
일반 속성을 가지고있다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다