또는 같은 더 작은 유형 대신 왜 string::compare반환 합니까? 내 이해는이 메서드는 -1, 0 또는 1 만 반환한다는 것입니다.intshortchar
두 번째 부분, 유형의 두 개체를 비교하는 비교 메서드를 디자인하고 Foo-1, 0 또는 1 만 반환하려는 경우 사용 short하거나 char일반적으로 좋은 생각일까요?
편집 : 수정되었습니다. string::compare-1, 0 또는 1을 반환하지 않습니다. 실제로 값> 0, <0 또는 0을 반환합니다.
대답은 대략적인 것 같습니다. int반환 값이 "rvalue"이고 해당 "rvalue"가 int 유형 (4 바이트)보다 작다는 이점 이 없기 때문에 보다 작은 유형을 반환 할 이유가 없습니다 . 또한 많은 사람들은 대부분의 시스템의 레지스터가 int어쨌든 크기가 될 것이라고 지적했습니다. 이 레지스터는 1, 2 또는 4 바이트 값을 제공하든 채워질 것이기 때문에 a를 반환하는 실제 이점은 없습니다. 더 작은 값.
편집 2 : 실제로 정렬, 마스킹 등과 같은 더 작은 데이터 유형을 사용할 때 추가 처리 오버 헤드가있을 수 있습니다. 일반적인 합의는 다음과 같이 많은 데이터로 작업 할 때 메모리를 절약하기 위해 더 작은 데이터 유형이 존재한다는 것입니다. 배열의 경우.
오늘 뭔가를 배웠습니다. 다시 한 번 감사드립니다!
string::compare()링크에 대한 문서 는 반환 값이 <0, 0 및> 0 -1, 0 및 1이
short또는 char대신 사용하는 이점은 무엇입니까 int? 대부분의 아키텍처는 레지스터에 함수의 반환 값을 저장하려고하는, 그리고는 intA와 단지뿐만 아니라 레지스터에 맞는 short나 char. 그리고 char숫자 유형에 사용 하는 것은 특히 부호있는 값이 올바르게 처리되도록 보장해야하는 경우 항상 나쁜 생각입니다.
char0보다 작은 경우 반환 값에 대한 코드 검사 char는 서명되지 않은 플랫폼에서 실패하기 때문에 사용 하는 것은 좋지 않습니다 .