2010-08-05 5 views

답변

15

일반 int은 동일합니다.

+0

일부 (모두?) 컴파일러는 기본값을 부호가없는 스위치로 변경합니다. MSVC에서는/J입니다. –

+1

FYI Microchip PIC 컨트롤러 용 CCS 컴파일러는 기본적으로 서명되지 않습니다. 아! – kenny

+9

/J 컴파일러 스위치는 int가 아닌 char에 영향을줍니다. "숯"은 서명 될 수도 안될 수도 있습니다. "char", "signed char"및 "unsigned char"는 "char"에 서명되었는지 여부에 관계없이 항상 고유 한 유형입니다. –

2

int들과 동일로

12

C++ 표준 3.9.1/2 :

부호있는 정수 유형이 있습니다 ". long int와" "서명 문자", "짧은 INT", "INT"및 < ...>

C++ 표준 3.9.1/3 : 부호있는 정수 유형 각각에 대해

,이 전자 "부호 문자", "부호 짧은 INT", "부호 INT"및 "서명 길이 INT"< ...>

: 대응을 ( 하지만 다른) 부호 정수형 xists

따라서 sizeof(int)sizeof(unsigned)과 같습니다. 그러나 boost::is_same< int, unsigned >::value은 거짓입니다.

+1

+1 표준 인용. – Cumbayah

1

signed intint과 같으며 양수 값과 음수 값을 모두 가질 수있는 정수 값을 지정합니다.

은 양수 값만 가질 수 있기 때문에 가장 큰 양수 값은 signed int보다 훨씬 큽니다.

+0

사실 * 값의 범위 *는 정확히 같은 크기입니다. 따라서 최소 값이 0이되도록 바뀌 었습니다. –

+0

맞습니다. 단어가 잘못 선택되었습니다. 고정;) –

3

ints은 기본적으로 longs과 같이 서명됩니다.

따라서 int, signedsigned int은 같은 것입니다.

마찬가지로 longsigned long은 동일합니다. 다른 한편으로는

chars 기본값이 없습니다. 구현은 서명 된 또는 서명되지 않은 것으로 간주 할 수 있습니다 (많은 경우 명령 줄 스위치를 선택해야 함). char, signed charunsigned char은 과부하 해결, 템플리트 설치 및 기타 장소에 대해 세 가지 유형으로 간주됩니다.

+0

마지막 문장이 너무 제한되어 있습니다. 과부하 해결이 아니라 어디 에나 있습니다. 예 : 또한 템플릿 인수로.그러므로'std :: vector '은'std :: vector '와 같은 타입이지만'std :: vector '는 ** std :: vector와 같은 타입이 아니다 ** MSalters

+0

@MSalters : 좋은 지적, 업데이트 됨. –

관련 문제