C ++의 부호없는 키워드


87

unsigned 키워드는 기본적으로 C ++의 특정 데이터 유형으로 지정됩니까? 프로토 타입의 클래스에 대한 함수를 작성하려고합니다.

unsigned Rotate(unsigned object, int count)

그러나 나는 정말로 무슨 unsigned의미 인지 이해하지 못한다 . 그런거 아니야 unsigned int?

답변:


93

로부터 링크 위 :

이러한 유형 중 일부는 signed, unsigned, short 및 long 키워드를 사용하여 수정할 수 있습니다. 이러한 유형 수정 자 중 하나가 단독으로 사용되는 경우 데이터 유형은 int로 간주됩니다.

이것은 작성자가 int를 사용하고 있다고 가정 할 수 있음을 의미합니다.


C99와 MISRA가 그렇게 할 수 있습니까?
nowox

42

정수 유형 :

short            -> signed short
signed short
unsigned short
int              -> signed int
signed int
unsigned int
signed           -> signed int
unsigned         -> unsigned int
long             -> signed long
signed long
unsigned long

char주의 :

char  (is signed or unsigned depending on the implmentation)
signed char
unsigned char

1
@Firas는 : 나는 C에서 알고 ISO C99의 일부도 ++ ISO C의 일부도 아닌 .Implicit의 INT
Prasoon Saurav

4
'unsigned'(자체로)를 사용하여 'unsigned int'유형을 선언하는 것은 C ++에서 표준입니다. 현재 표준 : 7.1.5.2 [dcl.simple.type]에는 사용 된 실제 유형에 대한 각 유형 선언을 식별하는 테이블이 있습니다. 이 테이블은 'unsigned'선언에서 'unsigned int'유형에 해당합니다.
David Rodríguez-dribeas

2
char은 signed char 또는 unsigned char 과 동일한 동작 을 갖지만 어떤 경우에도 별도의 유형으로 유지됩니다.

@Firas : 섹션 : 3.9.1 기본 유형 참조. Paragrah 2 : <quote> "signed char", "short int", "int", "long int"및 "long long int"의 5 가지 표준 부호있는 정수 유형이 있습니다. </ quote>
Martin York

21

unsigned 키워드가 C ++의 데이터 유형으로 기본 설정됩니까?

예, 서명 됨 및 서명되지 않음을 독립형 유형 지정자로 사용할 수도 있습니다.

정수 데이터 유형 char, short, long 및 int는 표시해야하는 숫자 범위에 따라 부호가 있거나 부호가 없을 수 있습니다. 부호있는 유형은 양수 값과 음수 값을 모두 나타낼 수 있지만 부호없는 유형은 양수 값 (및 0) 만 나타낼 수 있습니다.

n 비트를 포함하는 부호없는 정수는 0에서 2 n -1 사이의 값을 가질 수 있습니다 ( 2n 개의 다른 값).

그러나 signed 및 unsigned는 독립형 유형 지정 자로도 사용할 수 있으며 이는 각각 signed int 및 unsigned int와 동일 함을 의미합니다. 다음 두 선언은 동일합니다.

unsigned NextYear;
unsigned int NextYear;

3
그게 "예"아닌가요? 유형없이 사용하면 기본값은 int?
긴장

감사합니다! 영어는 제 모국어가 아니고 서명되지 않은 데이터 유형의 의미에 당황했습니다. 누구의 서명이 포함되어 있습니까? D : 명사 기호 ...에서 할 수 있다는 것을 나에게 발생하지 않았다
user74200

키워드 shortlong또한 유형 수정 자 입니다. 글을 쓰면 short s실제로 의미하는 short int s것처럼 unsigned u실제로 의미 unsigned int u합니다. (및 unsigned short의미 unsigned short int)
Ben Voigt

8

C ++ Reference에서 unsigned 키워드에 대해 읽을 수 있습니다 .

이 문제에는 서명 된 것과 서명되지 않은 두 가지 유형이 있습니다. 정수의 기본값은 부호가 있으며 이는 음수 값을 가질 수 있음을 의미합니다.

32 비트 시스템에서 정수는 32 비트이며, 이는 ~ 40 억의 값을 포함 할 수 있음을 의미합니다.

그리고 그것이 서명되었을 때, 이것은 당신이 그것을 분할해야 함을 의미합니다.

그러나 부호가없는 경우 값 음수를 포함 할 수 없으므로 정수의 경우 0 ~ + 40 억을 의미합니다.

Wikipedia 에 대한 정보가 조금 더 있습니다.


2
나는 대부분의 일을 위해 노래하는 것을 좋아합니다. 맛있는 탄소와 카멜 라이징!
Omnifarious 2010 년

1
오타를 편집하는 것은 어떻습니까? ... 그것이 "편집"버튼이있는 이유입니다!
Filip Ekberg

3

네, 의미 unsigned int합니다. 예전에는 C에 데이터 유형을 지정하지 않으면 int. 예를 들어 이것은 함수 반환 유형의 시도였습니다.

이 사마귀는 대부분 근절되었지만 여기에서 마지막 흔적을 만나고 있습니다. IMHO, unsigned int당신이 경험하는 혼란을 피하기 위해 코드를 수정해야합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.