알 수없는 유형의 최대 정수 값을 찾는 방법은 무엇입니까?알 수없는 정수 유형의 최대 값을 찾는 방법
template<class T>
T test(T i) {
if (((T)-1) > 0)
return -1;
T max_neg = ~(1 << ((sizeof(T)*8)-1));
T all_ones = -1;
T max_pos = all_ones & max_neg;
return max_pos;
}
참고 : 주어진 코드가 잘못되었을 수 있습니다. 초기의'-1' 테스트와 unsigned 타입에 대한 반환은 OK이지만, 다음과 같이합니다 : max_neg에 대해서 : 첫번째'CHAR_BIT'는 8보다 클 수 있고, 어쨌든'1'을 _sign bit_로 옮깁니다. 나는 그것이 정의되지 않았다고 생각한다; 'all_ones '에 대해서 :'-1'은 예를 들어 1의 보수 또는 사인 및 크기계에서 "모든 것"이 될 수 없습니다. 그리고 논리에 대해서 : 그것은 'max_neg'가 이미'max_pos'와 같을 것 같습니다. –