मुझे अज्ञात प्रकार का अधिकतम पूर्णांक मान कैसे प्राप्त हो सकता है?अज्ञात पूर्णांक प्रकार का अधिकतम मान कैसे खोजें
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' परीक्षण और हस्ताक्षरित प्रकारों के लिए वापसी ठीक है, लेकिन फिर:' max_neg' के लिए: पहले 'CHAR_BIT'' 8' से अधिक हो सकता है, और फिर भी आप _sign bit_ में '1' स्थानांतरित कर रहे हैं, जो मुझे लगता है कि अपरिभाषित है; और 'all_ones' के लिए:' -1' _not_ "सभी" हो सकता है, उदाहरण के लिए किसी के पूरक या साइन-और-आयाम मशीन पर। और तर्क के लिए: ऐसा लगता है कि 'max_neg' पहले से ही' max_pos' के बराबर होगा। –