Bilinmeyen türün maksimum tamsayı değerini nasıl bulabilirim?Bilinmeyen tür tamsayı türünün maksimum değeri nasıl bulunur?
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;
}
Not: Verilen kod muhtemelen yanlıştı. İlk '-1' testi ve imzasız türler için geri dönüş tamam, ancak sonra: 'max_neg' için:' CHAR_BIT 'için önce' 8 'den daha fazla olabilir ve her neyse, bir '1''i _sign bit_'e kaydırıyorsunuz, undefined olduğunu düşünüyorum; ve "all_ones" için: -1 ---, "tamamlayıcılar" olabilir, örneğin bir kişinin tamamlayıcısı veya işaretleme ve büyüklükteki makine. Ve mantık için: "max_neg" zaten "max_pos" ile eşit olacak gibi görünüyor. –