부호없는 데이터 유형은 언제 사용해야하며 서명 된 데이터 유형은 C? 그리고 나는 왜 우리가 그것을하는지, 그리고 우리가 필요한 것을 결정하는 방법을 알고 싶습니다.부호없는 데이터 형식을 사용하는 경우?
답변
음수 값을 포함하도록 변수를 사용해야하는 경우 부호가있는 데이터 유형을 사용하십시오. 부호있는 정수 오버 플로우로 인해 정의되지 않은 동작이 발생하므로 오버플로에주의하십시오.
변수가 음수가 아닌 값 또는 비트 패턴 만 보유하고있는 경우 부호없는 데이터 유형을 사용하십시오. 일반적으로 동일한 크기의 서명 된 데이터 유형보다 더 높은 최대 값을 보유 할 수 있습니다. 부호없는 정수 오버플로가 순환합니다.
unsigned
은 정말 기호의 개념이없는 엔티티에만 사용해야한다고하는 생각이 있습니다 (제가 자주 고수하려고합니다). 예를 들어, 기계 상태 레지스터에서 각 비트는 의미를 가지지 만 레지스터 값 전체에는 가능한 부호가 없습니다. 따라서 그러한 값에는 unsigned를 사용해야합니다.
나머지 모든 내용은 signed
을 사용하십시오.
unsigned
의 문제점은 부호있는 값과 함께 산술적으로 사용할 때 컴파일러에서 일부 변환을 수행해야한다는 것입니다. 이것들은 비 직관적 일 수 있으며 부정확하거나 예기치 않은 산술 결과를 초래할 수 있습니다. 다음은 주제에 관한 작은 기사입니다. http://soundsoftware.ac.uk/c-pitfall-unsigned
표준 라이브러리가 표준 라이브러리를 따르지 않는 것이 문제입니다. 많은 함수는 size
매개 변수 (예 : strncpy
)를 사용하거나 size_t
(예 : strlen
)의 size
(부호 없음)을 반환합니다. 이것이 서명되지 않은 논리는 프로세서의 최대 주소 공간까지 크기를 허용한다는 것입니다.
그래서 걸릴 최고의 라인이 무엇인지 혼란 스럽습니다. 컴파일러는 기호 변환을 경고 할 수 있습니다 - 여기 https://www.gnu.org/software/gsl/manual/html_node/GCC-warning-options-for-numerical-programs.html
불행히도 C의 동작은 일관성있는 이론적 근거에 의한 것보다 편의에 의해 주도 된 것 같습니다.대부분의 상황에서 부호없는 유형은 숫자로 동작하지 않고 대신 추상 대수 링의 멤버를 나타냅니다. 서명 된 int를 부호없는 int에 추가하면 부호없는 int가 생성되어야한다는 논리에 따라 부호없는 short에 부호가있는 long을 추가하면 부호가없는 short가 생성되어야한다는 명령이 내려집니다. 물론 그렇지 않습니다. – supercat
- 1. VB6는 부호없는 데이터 형식을 지원합니까?
- 2. 부호없는 char 포인터를 사용하는 경우
- 3. C++ : 부호없는 형식 만 사용하는 경우 부호있는/부호없는 불일치
- 4. Entity Framework에서 부호없는 int/long 형식을 사용하는 방법?
- 5. 부호없는 값을 사용하는 경우 Cin을 보호합니다.
- 6. java에서 부호없는 long 형식을 선언하는 방법은 무엇입니까?
- 7. 자바에서 부호없는 데이터 형식을 바이트 형식으로 읽는 방법
- 8. 다른 데이터 형식을 사용하는 배열 배열
- 9. 프로그램에서 Windows 데이터 형식을 사용하는 목적
- 10. C에서 데이터 형식을 문자열로 변환하는 방법 (형식을 모르는 경우)
- 11. POST를 위해 각도 형식을 사용하는 경우
- 12. C#에서 동적 데이터 형식을 사용하는 방법?
- 13. 데이터 형식을 사용하는 WPF 컨트롤 만들기
- 14. Java에서 다른 데이터 형식을 사용하는 큐
- 15. 혼합 변수 데이터 형식을 사용하는 수학
- 16. Postgresql : ENUM 데이터 형식을 사용하는 방법?
- 17. CoreMedia 데이터 형식을 사용하는 Swift에서의 확장
- 18. 올바른 데이터 형식을 사용하는 Mysql 반환 배열
- 19. 여러 데이터 형식을 사용하는 C# custom app.config
- 20. SQLXML 데이터 형식을 사용하는 방법을 학습하십시오.
- 21. 참조 데이터 형식을 사용하는 일반 큐
- 22. System.Net.IPAddress가 서명 된 형식을 사용하는 이유는 무엇입니까?
- 23. 부호없는 문자를 사용하는 비트 연산자
- 24. Java에서 부호없는 바이트를 사용하는 것
- 25. 데이터 구조체를 처음 사용하는 경우
- 26. 부호가있는 부호없는 및 부호없는 정수가
- 27. C++의 부호없는 키워드
- 28. 부호없는 int 대신 uint32_t를 사용하는 실질적인 예
- 29. 부호없는 int + 문자열을 부호없는 char 벡터에 캐스팅
- 30. str.find()에서 size_t 데이터 형식을 사용해도 안전합니까?
당신이 http://stackoverflow.com/questions/247873/signed-versus-unsigned-integers –
너무 광범위한 질문을 갈 참조하십시오. 그리고 건설적인 것도 아닙니다. FAQ를 읽어보십시오. – yulian