서명되지 않은 문자란 무엇인가요?

C/C++에서 부호 없는 문자는 어떤 용도로 사용되나요? 일반 '문자'와 어떻게 다른가요?

해결책

C++에서, 서로 다른 세 가지 문자 유형:

챨 '-' 서명됨 챨 '-' 부호 없는 챨 '-'

, 텍스트 '를 사용하여 문자 유형을 사용하는 경우 부적격 챨':

  • it 'a& # 39, & # 39 는 같은 유형의 문자 리터럴, # 39, & # 39 0&' 또는 ','.
  • it 유형은 'like' &quot 구성하는 캜 문장열 abcde";

또한 값을 번호로 작동됨 아웃해야 있지는 않지만, 이 값은 부호 또는 서명됩니다 표시할지를 미지정을 취급됩니다. 비록 ASCII 문자 비교를 통해 두려워 경우 정부는 교도관님도요 제한값 you& 단순한 금고에도요 # 39, re (0-127)

, 번호를 사용하는 경우 문자 형식으로 사용:

'-' , - 127 챨 서명됩니다 확보할 수 있으므로 적어도 127 수 있는 범위. (127) 로 흔히 128)

  • '' unsigned char , 0 부터 255 확보할 수 있으므로 최소한 범위.

c++ 표준 전용 보기입니다 &quot, At least&quot 있기 때문에, 각 숫자 유형은 대응에 필요한 최소 값의 범위. 스이제로프 (챨) '가 되어야 하는 1' (즉, 1 바이트) 이지만 바이트입니다 이론적으로 예를 들어 32 비트 수 있다. '-' '는 여전히 스이제로프 될 수 있다고 할 수 있는 크기로 보고하십시오 1' 마무리라뇨 기능을 스이제로프 (챨) = 스이제로프 (느린) =' 1 '.

해설 (13)

C 표준은 char의 서명 여부를 정의하지 않으므로 이는 구현에 따라 다릅니다. 플랫폼에 따라 char는 서명된 또는 서명되지 않은일 수 있으므로 구현이 이에 의존하는 경우 서명된 문자 또는 서명되지 않은 문자를 명시적으로 요청해야 합니다. 문자열에서 문자를 표현하려는 경우 char를 사용하면 플랫폼에서 문자열에 넣는 것과 일치합니다.

부호 없는 문자부호 있는 문자의 차이점은 예상한 대로입니다. 대부분의 플랫폼에서부호 없는 문자-128에서127범위의 8비트 2진수이고,부호 없는 문자는 8비트 부호 없는 정수(0에서255)입니다. 표준에서는char유형이 8비트를 가질 것을 요구하지 않으며,sizeof(char)1을 반환해야 한다는 점에 유의하세요. char의 비트 수는limits.hCHAR_BIT로 확인할 수 있습니다. 하지만 오늘날8`이 아닌 다른 값을 반환하는 플랫폼은 거의 없습니다.

이 문제에 대한 좋은 요약이 있습니다 여기.

제가 이 글을 올린 이후 다른 사람들이 언급했듯이, 작은 정수를 표현하려면 int8_tuint8_t를 사용하는 것이 더 좋습니다.

해설 (3)

39 의 정말 기분이 it& 때문에 이를 위해, 난 그냥 스테이드 일부 rules of C 와 C++ (이들은 같은 이와 관련해). , 모든 비트가 부호 없는 제 1 의 값을 결정하는 경우 'unsigned' 챨 참여하십시오 챨 객체에는. 둘째, 'unsigned' 는 서명되지 않은 챨 명시적으로 밝혔다.

이젠 누군가와 토론했다 의심하였더라 일이 발생합니까 변환하십시오 때 '를' 가치 '-' unsigned int 유형의 챨. 그는 이를 '결과' 에 있다는 생각에 모든 비트를 1 로 설정되었습니다 서명되지 않은 챨 있었기 때문에 걱정이 예증으로 표현. 그러나 그는 don& # 39, 수 없다. # 39 의 바로 뒤에 있는 변환 높여줍니까 아웃해야 it& 이 규칙을 어떤 고안되었습니다:

&gt. 새 유형이 의해 서명되지 않은 경우, 추가 또는 값이 반복적으로 변환되었습니다 하나를 빼서 보다 최대값인 표현할 수 있는 새로운 유형 이 값은 때까지 새로운 범위의 유형:. ('6.3.1.3p2' 구배면에 C99 에서)

39 의 that& 수학적 설명. 따라서 이 같은 규칙이에요 미적분학, 어떤 면에서 c++컴파일러는 익올때 설명합니다. 어쨌든 그게 단가요 비트 정수 '-' 지정하십시오. 한 가지 확실한 것은 변환 전에. 그래서, 무슨 환자지 수 있도록 모든 그 결과 'unsigned' 비트 '의' CHAR_BIT 이스마 챨 켜졌음 1?

  1. 모든 비트를 그 가치를 결정하는 참여하십시오 없는 패딩 비트가 발생할 수 있는 개체.
    • 1 '을' 1 '은' 한 번만 UCHAR_MAX 추가 매수가 값 범위 내에 UCHAR_MAX ', 즉'

39 의 that& 충분한 사실! 그래서 'unsigned' 이 있어야 할 때마다 모든 비트를 챨 해야 하나,

unsigned char c = (unsigned char)-1;

또한 그 변환은 다음과 같이 높은 것은 그냥 잘라내는 비트임을 주문하십시오 , # 39 의 보수 행사를 two& 노력한 것은 있을 수 있지만, 같은 단순한 절단, 반드시 다른 예중이 isn& t # 39 로 표현.

해설 (4)

예를 들어 어법을 같이 unsigned char :

  • unsigned char 매우 자주 사용되는 경우가 많다 (하지만 항상 그런 것은 아닙니다) 는 컴퓨터 그래픽으로 제작된 color_name 싱글바이트 란색이며 각 구성 요소. 흔히 볼 수 있는 RGB (또는 RGBA) 24 비트, unsigned char 각 란색이며 나타낼 수 있는 (또는 32). Unsigned char * 값 하락 이후 maxvalorarray [0,255] 의 값은 일반적으로 뜻으로 풀이된다.
  • 0 마무리라뇨 모두 주어진 란색이며 컴포넌트인지 부족.
  • 100% 마무리라뇨 255w 주어진 란색이며 안료.

End up with RGB 적색을 (255.0,0) - &gt 얻으실 수 있습니다. (0 %0 %100% 빨강, 녹색, 파랑).

    • 서명됨 챨 사용하지 않는 이유는? 산술 및 비트 등이 문제가 됩니다. A , # 39 의 범위는 본질적으로 이미 설명한 char 서명됩니다 의해 - 128 옮겼다. 매우 단순하고 소박한 변환하는 방법 (주로 비사용률) 는 세 가지 구성 요소를 회색제 RGB 를 평균 값을 란색이며 구성 요소가 있지만, 이 때 문제가 스스럼없이 란색이며 부정적인 반응을 보였다. 레드 (255, 0, 0) 를 사용할 때 unsigned char 산술 평균 (85 · 85, 85). 그러나 이 값은 har 서명됩니다 (127 - 128, - 128) 끝날 것 "이라고 말했다 (99 99, -, - 99) 와 될 수 있는, unsigned char * (29, 29, 29) 의 공간, 이는 틀린 말이다.
해설 (0)

문자를 작은 정수로 사용하려는 경우 가장 안전한 방법은 int8_tuint8_t 유형을 사용하는 것입니다.

해설 (2)

부호 없는 챨 '불과' 를 255 양수입니다 발 주드리크 0

신지애 등

'수' 는 모두 챨 서명됩니다 양수값과 제외어 발 주드리크 -128 +127

해설 (0)

39 보장받을 수 없다 ',' 와 'unsigned' 챨 챨 aren& 8 비트, 8 비트 이상의 모든 유형의 platforms&amp mdash, 보장받을 수 있습니다. 일부 플랫폼은 [9 비트, 32 비트 또는 64 비트 바이트입니다] [1]. 그러나 오늘날 가장 일반적인 플랫폼 (Windows, Mac, linix x86, etc.) 가 8 비트 바이트입니다.

[1]: https://isocpp.org/wiki/faq/intrinsic-types # 당 비트 바이트

해설 (0)

부호 없는 문자의 범위는 -128~127이고부호 없는 문자`의 범위는 0~255입니다.

char`는 컴파일러에 따라 부호 있는 문자 또는 부호 없는 문자와 동일하지만 별개의 유형입니다.

C 스타일 문자열을 사용하는 경우 char를 사용하면 됩니다. 산술에 문자를 사용해야 하는 경우(매우 드물지만) 이식성을 위해 서명 또는 부호 없는 문자를 명시적으로 지정하세요.

해설 (0)

(무기명) 는 서명되지 않은 챨 바이트입니다 값 (0 에서 255). &Quot char&quot, 생각해 볼 수 있습니다. 현재 측면에서 &quot character"; 그러나 그것은 진짜 수치값은. 일반 &quot char"; 128 값을 가질 수 있으므로, 이러한 값을 사용하는 문자 서명됨 매핑됩니까 ASCII 인코딩입니다. 그러나 어느 경우든 바이트입니다 값을 메모리에 저장하는 너희는너희가 있다.

해설 (0)

직접판매용 값을 측면에서 일반 챨 CHAR_MIN 사이의 값을 때 사용되는 것으로 알려져 있는 '에서' 긍정적 '와' 는 서명되지 않은 상태에서 CHAR_MAX 챨 연산뿐 maxvalorarray 끝. 예를 들어, ',' 일반 '8' 은 CHAR_BIT maxvalorarray 챨 보장받을 수 밖에 [0, 127] (될 수 있어 서명됨 또는 부호 없는) '와' unsigned '을 동시에 챨 서명됨 챨' 을 [0, 255] [- 127, 127].

어떤 면에서, 이 표준은 객체에는 it& # 39 에 사용되는 POD (plain old data) 를 직접 스크램블된 변환되었습니다 서명되지 않은 배열입니다 챨. 이 표현 및 비트 패턴을 객체에는 검사할 수 있습니다. 말장난 같은 안전 보장을 위해 존재하며, t # 39 doesn& 유형 또는 서명됩니다 챨 챨.

해설 (5)

부호 없는 모든 비트 속임수 챨 핵심입니다. 모든 플랫폼을 의 거의 모든 컴파일러와의 는 서명되지 않은 챨 앨리어스가 바이트입니다. 부호 없는 정수 (대개) 의 8 비트. 취급할 수 있는 작은 정수 또는 팩이 비트임을

다른 사람이 있는 것처럼, 중독, 표준, t # 39 는 챨 예증으로 정의하십시오 doesn& 있다 "고 전했다. 그래서 당신은 3 가지 &quot char"; 유형: 부호, 문자, 서명됨 챨 챨.

해설 (2)

Signed 와 unsigned 를 사용하여 특정 길이와 같은 경우, 다양한 유형의 you& # 39, re 아마도 uint8_t int8_t 않기 때문에, 단순히 uint16_t 등을 통해 더 나은 오프하도록, 정확히 어떤 그들은 말한다.

해설 (0)

일반 챨 서명되지 않은 챨 soundmixer. 비트가 예약됩니다 예증으로 다른 번호로 있다. 반대로 이 변경사항과 maxvalorarray [- 128 ~ 127] 를 [0 ~ 255].

부호 없는 자, 한 때 일반적으로 사용되는 don& # 39 징조예요 된 것입니다. 이 같은 업무를 수행할 때 발쿰치로 차이 등이 비트 (shift+ctrl 연장시킵니다 예증으로) 및 기타 사항을 다룰 때 챨 비호환성의 바이트입니다 정보기술 (it) 을 사용하지 않고 숫자입니다.

해설 (0)

1, [이] 일부 구글링 찾을 수 있는 사람들이 이에 대해 토론했다.

기본적으로 서명되지 않은 챨 싱글바이트. 따라서 하는 경우 이 사용하는 것과 한 바이트입니다 데이터 (예를 들어, 아마 사용하려는 迈向 세트 플래그 on / off 로 윈도우 API 함수, 전달될 진행되고 있는 경우가 많다).

해설 (0)

부호 없는 챨 단 양수를: 0 부터 255 서명됨 챨 는 양수값과 제외어 값: - 128 로 +127

해설 (0)

프롬 &quot 말을 인용, c 프로그래밍 laugage&quot. book:

'또는' unsigned '또는' 서명됩니다 한정자는 정수 챨 적용될 수 있다. 부호 없는 번호 이 법이 항상 양수입니다 또는 제로, 나머지 2 ^ n (n 은 숫자 및 위선지들을 산술 비트 입력. 자 그럼, 예를 들어, 8 비트, unsigned char 변수에 값을 가지고 있다. 반면 서명됨 자 사이에 값이 입력되었는지 0-사이의 255w - 128, 127 명이 (받을시간은 two& # 39. s 보완할 시스템) 자, 또는 시스템 종속 unsigned 는 일반 서명됩니다 표시할지를 있다. 그러나 인쇄가능 문자는 항상 양수입니다.

해설 (0)