문제

내가 읽고 있어요 C ++ 프로그래밍 언어 또한 Stroustrup은 숯의 int 값이 구현에 따라 0에서 255 또는 -127에서 127 사이의 범위가 될 수 있다고 명시하고 있습니다. 이 올바른지? 그것은 -128에서 127 사이에 있어야합니다. 그렇지 않은 경우, 256이 아닌 두 번째 구현 가능성에서 255 개의 가능한 값 만있는 이유는 무엇입니까?

도움이 되었습니까?

해결책

당신은 갇혀 있습니다 둘의 보완 사고 - C ++ 표준은 음수에 사용 된 표현을 정의하지 않습니다!

컴퓨터 (신 금지)가 사용하는 경우 하나의 보완 음수를 나타내려면 8 비트 바이트에서 범위가 -127 ~ + 127입니다. 거꾸로, 당신은 0에 대한 두 가지 가능한 표현이 있습니다 ...

그러나 현실 세계에서 당신은 보완 컴퓨터를 만나지 않을 것입니다.

다른 팁

서명되지 않은 문자가 0에서 255 사이의 범위라고 생각하는 것은 잘못입니다. 그것은 최소 범위 일뿐입니다. 숯은 적어도 8 비트를 가져야하며, 서명 된 숯, 부호없는 숯불 및 숯 자체는 실제로 8 비트를 가질 수 있습니다. 그렇다면 서명되지 않은 Char는 255를 넘어갈 수 있음을 의미합니다. 그러나, 나는 8 비트 이상이있는 구현을 얻지 못했지만 이론적으로 가능합니다. 이는 C89 표준 (C ++ 03베이스)에 지정되어 파일 제한을 문서화합니다 (char_bit, uchar_max, char_max).

C 및 C ++의 문자 유형

읽음으로써 그것은 구현에 따라 그 중 하나 일 수있는 것 같습니다.

표준은 숯 유형에 대해 아무 말도하지 않기 때문에 "char"는 다음과 같습니다.

  1. 일부 컴파일러의 "부호없는 Char"(0-255) (예 : ARM 프로세서 용 Texasinstruments 컴파일러 -OMAP 시리즈)

  2. 대부분의 컴파일러에서 "Signed Char"(-128-127) (GCC, MSVC ...)

항상 잘 정의 된 범위가 있는지 확인하려면 "Signed Char"또는 "Signivened Char"를 사용해야합니다.

도움이되는 답변에 대해 Roddy와 Esteban Brenes에게 감사드립니다.

이것은 나의 현재 이해입니다.

세 가지 가능성이 있습니다. 값이 서명되지 않은 것으로 표현되면 char는 0에서 255 사이입니다. 값이 2의 보완에 서명 된대로 표시되면 char는 -128에서 127 사이입니다. 마지막으로, 값이 보완에 서명 된대로 표시되는 경우. , char는 -127에서 127 사이의 범위입니다.이 최종 가능성은 처음 두 구현에 대한 256 개의 가능한 값과 대조적으로 255 개의 가능한 값 만있을 것이지만, 이는 보완 표현에서 음의 0을 고려하지 않습니다. .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top