서명되지 않은 데이터 유형은 무엇입니까?
이 unsigned
"유형없는"유형이 몇 번 사용되는 것을 보았지만 이에 대한 설명은 본 적이 없습니다. 해당 signed
유형 이 있다고 가정 합니다. 예를 들면 다음과 같습니다.
static unsigned long next = 1;
/* RAND_MAX assumed to be 32767 */
int myrand(void) {
next = next * 1103515245 + 12345;
return((unsigned)(next/65536) % 32768);
}
void mysrand(unsigned seed) {
next = seed;
}
지금까지 수집 한 내용 :
-내 시스템에서 sizeof(unsigned) = 4
(32 비트 unsigned int에 대한 힌트)
-다른 유형을 서명되지 않은 버전으로 캐스팅하는 약어로 사용할 수 있습니다.
signed long int i = -42;
printf("%u\n", (unsigned)i);
이 ANSI C입니까, 아니면 컴파일러 확장입니까?
unsigned
실제로는의 속기 unsigned int
이며 표준 C에서 정의됩니다.
unsigned
의미 unsigned int
. signed
의미 signed int
. 그냥 사용 unsigned
하는 unsigned int
것은 C에서 선언하는 게으른 방법입니다 . 네, 이것은 ANSI입니다.
역사적으로 C에서는 데이터 유형을 생략하면 "int"로 간주됩니다. 따라서 "unsigned"는 "unsigned int"의 약어입니다. 이것은 오랫동안 나쁜 습관으로 간주되었지만 여전히 그것을 사용하는 상당한 양의 코드가 있습니다.
C에 unsigned
대한 바로 가기입니다 unsigned int
.
당신을 위해 동일이 long
그에 대한 바로 가기입니다long int
그리고 unsigned long
( a 가 될 것입니다 unsigned long int
) 선언하는 것도 가능합니다 .
이것은 ANSI 표준에 있습니다.
C 및 C ++에서
unsigned = unsigned int (Integer type)
signed = signed int (Integer type)
n 비트를 포함하는 부호없는 정수는 0과 (2 ^ n-1) 사이의 값을 가질 수 있으며, 이는 2 ^ n 개의 서로 다른 값입니다.
부호없는 정수는 양수 또는 0입니다.
부호있는 정수는 2의 보수를 사용하여 컴퓨터에 저장됩니다.
로부터 C 사양 , 섹션 6.7.2 :
— unsigned 또는 unsigned int
것을 의미 unsigned
유형을 지정하지 않을 경우, 기본값한다 unsigned int
. 따라서 쓰기 unsigned a
는 unsigned int a
.
C17 6.7.2 §2에 따르면 :
유형 지정자의 각 목록은 다음 다중 세트 중 하나 여야합니다 (항목 당 다중 세트가 둘 이상인 경우 쉼표로 구분). 유형 지정자는 임의의 순서로 발생할 수 있으며 다른 선언 지정자와 혼합 될 수 있습니다.
— void
— char
— signed char
— unsigned char
— short, signed short, short int 또는 signed short int
— unsigned short 또는 unsigned short int
— int, signed 또는 signed int
— unsigned 또는 unsigned int
— long, signed long , long int 또는 signed long int
— unsigned long 또는 unsigned long int
— long long, signed long long, long long int 또는 signed long long int
— unsigned long long 또는 unsigned long long int
— float
— double
— long double
— _Bool
— float _Complex
— double _Complex
— long double _Complex
— 원자 유형 지정자
— 구조체 또는 공용체 지정자
— 열거 형 지정자
— typedef 이름
So in case of unsigned int
we can either write unsigned
or unsigned int
, or if we are feeling crazy, int unsigned
. The latter since the standard is stupid enough to allow "...may occur in any order, possibly intermixed". This is a known flaw of the language.
Proper C code uses unsigned int
.
참고URL : https://stackoverflow.com/questions/1171839/what-is-the-unsigned-datatype
'developer tip' 카테고리의 다른 글
중재자 대 관찰자 객체 지향 디자인 패턴 (0) | 2020.09.18 |
---|---|
변수 또는 매개 변수의 이름 가져 오기 (0) | 2020.09.18 |
객체가 Python에서 파일과 유사한 지 확인 (0) | 2020.09.18 |
파이썬에서 특정 길이로 난수를 생성하는 방법 (0) | 2020.09.18 |
Google지도 API의 대안 (0) | 2020.09.18 |